Динамически считывать имя функции bash изнутри функции bash

Попробуйте создать относительно небольшой раздел журнала и добавить его в / etc / fstab с опцией sync и / var / log путь монтирования:

...<previos fstab lines>...
UUID=<UUID of created partition>  /var/log  ext4  rw,sync  0  0

Это заставит вашу систему записывать журнал непосредственно на блочное устройство без кэширования записей, поэтому сообщения журнала записываются в момент их появления и не сбрасываются при перезагрузке. {{ 1}} Но помните, что синхронная запись в журнал может потребовать большого количества операций ввода-вывода и не подходит для длительного использования на производственных серверах.

1
31.08.2018, 23:57
2 ответа

Это неприятный хак, но, по крайней мере, он позволяет вам поместить exportкоманду над определением функции, где ее легче увидеть.

# a function to create a dummy function and export it
export_function() { eval "function $1 { :; }; export -f $1"; }

# then

export_function foo
foo() { echo "here is the *real* function"; }
3
27.01.2020, 23:15

Хорошо, я думаю, что это разумный и надежный способ сделать это:

#!/usr/bin/env bash

if [[ ! "$SHELLOPTS" =~ "allexport" ]]; then
    set -a;
    all_export=nope;
fi


ores_git_merge_with_integration(){
   install_ores_gitflow;
   command "$FUNCNAME" "$@"
}

ores_git_tools(){
   install_ores_gitflow;
   command "$FUNCNAME" "$@"
}


if [ "$all_export" == "nope" ]; then
  set +a;
fi

в вашем скрипте bash потенциально может сгруппировать все ваши экспортируемые функции и окружить их командами set -a / set +.

Цель проверки $SHELLOPTSenv var состоит в том, чтобы увидеть, не был ли включен набор -a, и если это не так, нам нужно отключить его, когда мы закончим.

0
27.01.2020, 23:15

Теги

Похожие вопросы