slackjeff
(usa Slackware)
Enviado em 17/10/2018 - 12:28h
AO inves de chamar um script o qual irá abrir uma subshell para executar utilize o '
source ' ou o '
. ' e crie uma função externa, o source ou . irá puxar a biblioteca para dentro do mesmo processo, não abrindo uma subshell.
Exemplo:
# Carregando bibliotecas
source sucesso.sh
source falha.sh
# Se arquivo existir
[ -e "arquivo" ] && _FUNCAO_SUCESSO || _FUNCAO_FALHA
Ou você pode por as funções dentro do primeiro programa mesmo e fazer a mesma chamada, retirando o source.
Uma outra alternativa seria não por as bibliotecas dentro de funções e fazer as chamadas.
# Aqui não por a(s) bibliotecas dentro de uma função, criar apenas um simples script
# O source se encarrega do resto.
[ -e "arquivo" ] && source sucesso.sh || source falha.sh
E não se esqueça que tudo que você trampar dentro de um script externo e chamar pelo source ele trará para o processo pai. Ou seja se você dar um exit no meio do programa dentro da biblioteca o script sairá.
Resumo da historia, EVITE chamar script com "bash script.sh" "sh script.sh" "./script" dentro de um script pai. Isto é lento e abre subprocessos tornando os mesmo LENTOS. Sem falar que é totalmente anti profissional.
I'M ROOT!
Slackware user since ~2008
Meu canal no youtube:
https://www.youtube.com/SlackJeff
Meu Site:
https://www.slackjeff.com.br/
Meus Programas estão aqui:
https://notabug.org/jeffersonrocha