GNU/Linux >> Tutoriels Linux >  >> Linux

Comment puis-je exécuter une fonction à partir d'un script en ligne de commande ?

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

Linux
  1. Comment tester Oom-killer depuis la ligne de commande ?

  2. Comment monter automatiquement depuis la ligne de commande ?

  3. Comment puis-je tester mon script Bash sur des versions plus anciennes de Bash ?

  4. Comment exécuter la commande Vim depuis le shell ?

  5. Comment puis-je copier un dossier à partir de la ligne de commande Linux ?

Comment exécuter des requêtes MySQL/MariaDB directement à partir de la ligne de commande Linux

Comment exécuter une commande / un script Linux Shell en arrière-plan

matlab exécute le script à partir de la ligne de commande linux

Comment puis-je créer un fichier avec une taille spécifique à partir d'une ligne de commande ?

Comment puis-je exécuter une commande après le démarrage ?

Comment puis-je obtenir mon adresse IP à partir de la ligne de commande ?