Qual é a prática recomendada/comum para incluir uma função usada em vários scripts?

Qual é a prática recomendada/comum para incluir uma função usada em vários scripts?

Atualmente fiz isso fornecendo um arquivo de funções incluindo todas as minhas funções nos vários scripts que o utilizam:

source ./functions.sh

Uma desvantagem que notei é que o número da linha que o bash imprime para erros de sintaxe não é mais o do script original.

Responder1

A maneira como você está usando é razoável.
Não consigo reproduzir seu problema com obash shellEu poderia trabalhar (GNU bash, versão 4.1.2 e GNU bash, versão 4.3.11). Veja abaixo:


Roteiro de teste go.sh. Você pode executá-lo ./go.shdepois de torná-lo executável, chmod u+x go.shbem como/bin/bash go.sh

echo  "   ### Here we start ###"  Script line 1
source my_sourced_file
echo Script line 3
casfsda    # this is the line 4 of script
echo Script line 5
f  "Script line #6 using the function from sourced file"
echo "   ### Here we finish ###" Script line 7

Arquivo com funções que você deve colocar no diretório atual chamado my_sourced_file:

echo Hello word this is the 1 line of my_sourced_file
f(){ echo Hello $1 ;}
f "Gustave line number 3 of  my_sourced_file"
echo linea 4 my_sourced_file

Saída (empretoo erro)

### Aqui começamos ### Linha 1 do script
Olá palavra, esta é a 1 linha do meu_arquivo_fonte
Olá Gustave linha número 3 do meu arquivo_fonte
linha 4 meu_arquivo_fonte
Linha do script 3
./go.sh: linha 4: casfsda: comando não encontrado
Linha 5 do script
Olá Linha 6 do script usando a função do arquivo de origem ### Aqui terminamos ### Linha 7 do script

  • Testado no GNU bash, versão 4.3.11
  • e no antigo GNU bash, versão 4.1.2

informação relacionada