LINUX.ORG.RU

sh-скрипты: пара вопросов


0

0

1. Как в sh-скрипте определить имя функции, которая работает в данный момент? По типу $0. Хочется унифицированного способа, а не самому в ручную вбивать название функции.

2. Есть ли аналог Си-шного оператора static для функций? То есть, чтобы функция была видна только в пределах файла, в котором она определена.

anonymous

1. bash -> FUNCNAME ?

anonymous
()

аналога нет, но можно сделать такое, например:

getUserShell="grep '^'$USR':' /etc/passwd|cut -d ':' -f 7"

USER_SHELL=$(USR=root; eval $getUserShell )

получается эмуляция локальной функции с именованными параметрами.

Slavaz ★★★★★
()

по пункту 2 -- если создать процесс-ребенок (например круглыми скобками) то все функции исчезнут. Можно только оставить экспортируемые функции (export -f). Но это башизм, экспортируемых функций нет в позиксе. Их можно эмулировать экспортируя переменную с текстом функции, а потом eval'я ее.

dilmah ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.