Existe alguma maneira de encapsular funções bash?

0

Estou escrevendo um script simples script.bash que deve exportar algumas variáveis do ambiente, para usá-lo na minha sessão atual eu tenho que fonte

$ . script.bash

script.bash

function fun1() {
    # TODO
}

function fun2() {
    # TODO
}

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

para usar script.bash , chame a função main_script .

Pergunta :

  • Existe alguma maneira de ocultar fun1 e fun2 e impedir que eles sejam chamados de fora de script.bash .
por tarrsalah 23.05.2013 / 00:19

3 respostas

1

Adicione unset -f fun1 fun2 no final do script.
A função -f spesifies, como unset , pode cancelar a configuração de ambas as funções e variáveis.

página de manual não definida

    
por 23.05.2013 / 00:22
1

Script:

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

Quando você o executa diretamente, parece não ter função

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

Quando você faz a sua fonte:

$ source ./test.sh 
function executed

Isso que você tinha em mente?

    
por 24.09.2013 / 00:28
0

você pode manipular o nome da função e, em seguida, usar 'alias' / 'unalias' para vinculá-lo a um nome legível quando você quiser usá-lo.

    
por 23.05.2013 / 05:22