GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo puedo ejecutar una función desde un script en la línea de comandos?

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

Linux
  1. ¿Cómo probar Oom-killer desde la línea de comandos?

  2. Cómo ejecutar scripts de Python desde shell

  3. ¿Cómo puedo ejecutar correctamente los scripts de línea de comandos de Perl one liner?

  4. ¿Cómo instalo un script para que se ejecute en cualquier lugar desde la línea de comandos?

  5. ¿Cómo puedo ejecutar código PHP desde la línea de comandos?

Cómo ejecutar el comando / secuencia de comandos de Linux Shell en segundo plano

¿Cómo puedo probar mi script Bash en versiones anteriores de Bash?

matlab ejecuta el script desde la línea de comando de Linux

¿Cómo puedo crear un archivo con un tamaño específico desde una línea de comando?

¿Cómo puedo ejecutar un comando después del arranque?

Cómo ejecutar TeX desde la interfaz de línea de comandos en Linux