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