GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso eseguire una funzione da uno script nella riga di comando?

Se lo script definisce solo le funzioni e non fa nient'altro, puoi prima eseguire lo script nel contesto della shell corrente usando source o . comando e quindi chiamare semplicemente la funzione. Vedi help source per ulteriori informazioni.


Il seguente comando prima registra la funzione nel contesto, quindi la chiama:

. ./myScript.sh && function_name

Bene, mentre le altre risposte sono corrette, puoi sicuramente fare qualcos'altro:se hai accesso allo script bash, puoi modificarlo e semplicemente inserire alla fine il parametro speciale "[email protected]" - che si espanderà agli argomenti della riga di comando che specifichi, e poiché è "solo" la shell proverà a chiamarli alla lettera; e qui puoi specificare il nome della funzione come primo argomento. Esempio:

$ 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

Per la lucidatura, puoi prima verificare che il comando esista ed è una funzione:

# 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. Come installo uno script da eseguire ovunque dalla riga di comando?

  2. Come posso creare un file con una dimensione specifica da una riga di comando?

  3. Come posso copiare una cartella dalla riga di comando di Linux?

  4. Come posso eseguire un comando dopo l'avvio?

  5. Come ottengo il mio indirizzo IP dalla riga di comando?

Come eseguire query MySQL/MariaDB direttamente dalla riga di comando di Linux

Come eseguire il comando / script della shell di Linux in background

matlab esegue lo script dalla riga di comando linux

Come eseguire il comando Vim dalla shell?

Come posso scrivere su dmesg dalla riga di comando?

Come eseguire TeX dall'interfaccia della riga di comando in Linux