Si le script ne définit que les fonctions et ne fait rien d'autre, vous pouvez d'abord exécuter le script dans le contexte du shell actuel en utilisant le source
ou .
commande, puis appelez simplement la fonction. Voir help source
pour plus d'informations.
La commande suivante enregistre d'abord la fonction dans le contexte, puis l'appelle :
. ./myScript.sh && function_name
Eh bien, alors que les autres réponses sont bonnes - vous pouvez certainement faire autre chose :si vous avez accès au script bash, vous pouvez le modifier, et simplement placer à la fin le paramètre spécial "[email protected]"
- qui s'étendra aux arguments de la ligne de commande que vous spécifiez, et puisqu'il est "seul", le shell essaiera de les appeler textuellement ; et ici, vous pouvez spécifier le nom de la fonction comme premier argument. Exemple :
$ 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
Pour le polonais, vous pouvez d'abord vérifier que la commande existe et est une fonction :
# 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