Eu tento expor de um script apenas funções específicas.
Por exemplo, digamos que eu tenha o script hello_world.sh
e tenha 2 funções, hello
e world
:
## hello_world.sh - name of the file, not the beginning of file
hello() { echo "Hello"; }
world() { echo "World"; }
Eu quero que o script use.sh
exporte apenas a função que solicito, exemplo hello
. Para isso eu chamaria a função use
de use.sh
com um parâmetro para informar qual função eu queria exportar:
unset use hello world; . use.sh && use hello && hello && echo "Should succeed"
e world || echo "Should fail and reach here because there is no such function"
Eu gostaria de evitar o armazenamento das funções em arquivos temporários para isolar ambientes diferentes (ba) sh.
Armazenar em um arquivo temporário pode ser algo assim:
## use.sh - name of the file, not the beginning of file
#! /bin/sh
use() {
local env_file="$(/bin/mktemp)"
(. ./hello_world.sh; declare -pfx "$@") > "${env_file}"
. "${env_file}"
/bin/rm -f "${env_file}"
}
Como eu poderia, em vez disso, não criar arquivos (parece algum tipo de solução alternativa) e expor diretamente as funções?