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

0

Eu fiz isso ao fazer o sourcing de um arquivo de funções incluindo todas as minhas funções nos vários scripts que o usam:

source ./functions.sh

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

    
por Gustave 15.07.2015 / 17:27

1 resposta

0

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

Script de teste go.sh . Você pode executá-lo com ./go.sh depois de torná-lo executável com chmod u+x go.sh , bem 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ê precisa 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 (em preto o erro)

### Here we start ### Script line 1
Hello word this is the 1 line of my_sourced_file
Hello Gustave line number 3 of my_sourced_file
linea 4 my_sourced_file
Script line 3
./go.sh: line 4: casfsda: command not found
Script line 5
Hello Script line #6 using the function from sourced file ### Here we finish ### Script line 7

  • Testado no bash do GNU, versão 4.3.11
  • e no antigo bash do GNU, versão 4.1.2
por 17.07.2015 / 12:55

Tags