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.sh
después de hacerlo ejecutable con chmod u+x go.sh
así 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