Я пишу простой скрипт script.bash который должен экспортировать некоторые переменные окружения, чтобы использовать его в моем текущем сеансе, я должен его получить

$ . script.bash

script.bash

function fun1() {
    # TODO
}

function fun2() {
    # TODO
}

function main_script() {
    # ...
    # ...
    fun1 # calling fun1
    # ...
    func2 $ 1 $2 # calling fun2
    # ...
}

чтобы использовать script.bash , вызовите функцию main_script .

Вопрос:

  • Есть ли способ скрыть fun1 и fun2 и не дать им быть вызванными извне из script.bash .

3 ответа3

1

Добавьте unset -f fun1 fun2 в конец скрипта.
-f функция spesifies как unset с охраны может сбросить обе функции и переменные.

неустановленная запись справочной страницы

1

Автор сценария:

unset my_protected_function
function my_protected_function() {
    echo "function executed"
}
[ "$0" != "/bin/bash" ] && unset my_protected_function
my_protected_function

Когда вы запускаете его напрямую, посмотрите, нет ли функции

$ ./test.sh
./test.sh: line 15: my_protected_function: command not found

Когда вы получаете это:

$ source ./test.sh 
function executed

Это то, что вы имели в виду?

0

Вы можете изменить имя функции, а затем использовать «псевдоним» /«unalias», чтобы связать /отменить привязку к понятному человеку имени, когда вы хотите его использовать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .