¿Cuál es la mejor práctica común para incluir una función que se utiliza desde varios scripts?

¿Cuál es la mejor práctica común para incluir una función que se utiliza desde varios scripts?

Actualmente hice esto obteniendo un archivo de funciones que incluye todas mis funciones en los distintos scripts que lo usan:

source ./functions.sh

Una desventaja que noté es que el número de línea que imprime bash para errores de sintaxis ya no es el del script original.

Respuesta1

La forma en que lo estás usando es razonable.
No puedo reproducir tu problema con elcáscara de golpePodría trabajar en (GNU bash, versión 4.1.2 y GNU bash, versión 4.3.11). Véalo a continuación:


Guión de prueba go.sh. Puede ejecutarlo ./go.shdespués de hacerlo ejecutable con chmod u+x go.shasí como también/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

Archivo con funciones que debes colocar en el directorio actual llamado 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

Salida (ennegroel error)

### Aquí comenzamos ### Línea de script 1
Hola palabra, esta es la primera línea de my_sourced_file
Hola Gustave línea número 3 de my_sourced_file
línea 4 my_sourced_file
Línea de script 3
./go.sh: línea 4: casfsda: comando no encontrado
Línea de script 5
Hola Línea de script #6 usando la función del archivo fuente ### Aquí terminamos ### Línea de script 7

  • Probado en GNU bash, versión 4.3.11
  • y en el antiguo GNU bash, versión 4.1.2

información relacionada