Si el script solo define las funciones y no hace nada más, primero puede ejecutar el script dentro del contexto del shell actual usando el source
o .
comando y luego simplemente llamar a la función. Ver help source
para más información.
El siguiente comando primero registra la función en el contexto, luego la llama:
. ./myScript.sh && function_name
Bueno, aunque las otras respuestas son correctas, ciertamente puede hacer otra cosa:si tiene acceso al script bash, puede modificarlo y simplemente colocar al final el parámetro especial "[email protected]"
- que se expandirá a los argumentos de la línea de comando que especifique, y dado que está "solo", el shell intentará llamarlos palabra por palabra; y aquí podría especificar el nombre de la función como primer argumento. Ejemplo:
$ cat test.sh
testA() {
echo "TEST A $1";
}
testB() {
echo "TEST B $2";
}
"[email protected]"
$ bash test.sh
$ bash test.sh testA
TEST A
$ bash test.sh testA arg1 arg2
TEST A arg1
$ bash test.sh testB arg1 arg2
TEST B arg2
Para pulir, primero puede verificar que el comando existe y es una función:
# Check if the function exists (bash specific)
if declare -f "$1" > /dev/null
then
# call arguments verbatim
"[email protected]"
else
# Show a helpful error
echo "'$1' is not a known function name" >&2
exit 1
fi