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?