En shell comme dans tous les langages on peut passer des arguments
ls -l # -l est l'argument passé à ls
Exemple avec le script test suivant:
fichier test.sh:
#!/bin/bash
echo "Bonjour le monde !"
echo "\$#:" $#
echo "\$1:" $1
echo "\$2:" $2
chmod +x file.sh # pour rendre exécutable file
bruno@bruno-HP-250-G6-Notebook-PC:~/test$ bash test.sh
Bonjour le monde !
$#: 0
$1:
$2:
bruno@bruno-HP-250-G6-Notebook-PC:~/test$ bash test.sh 5 6 9
Bonjour le monde !
$#: 3
$1: 5
$2: 6
bruno@bruno-HP-250-G6-Notebook-PC:~/test$
Ce qu’il faut retenir sur les arguments en shell
| Variable | Signification | Exemple si on exécute ./script.sh A B C |
|---|---|---|
$0 | Nom du script tel qu’invoqué | ./script.sh |
$1, $2… | Arguments positionnels (1er, 2e, etc.) | $1 = A, $2 = B, $3 = C |
$# | Nombre total d’arguments passés | 3 |
$* | Tous les arguments sous forme d’une seule chaîne | "A B C" |
$@ | Tous les arguments sous forme séparée | "A" "B" "C" |
"$*" | Tous les arguments dans une chaîne unique (entre guillemets) | "A B C" (1 seule boucle) |
"$@" | Tous les arguments, chacun séparé, entre guillemets | "A" "B" "C" (3 itérations en boucle) |
$$ | PID (identifiant du processus) du script | ex. 12345 |
$? | Code de retour de la dernière commande exécutée | 0 ou autre selon succès/échec |
$! | PID du dernier processus exécuté en arrière-plan | PID d’un command & |
$- | Options actuelles du shell (set) | ex. himBH |
Lister tous les arguments avec $@
#!/bin/bash
for arg in "$@"; do
echo "Argument : $arg"
done
