Arguments et options des scripts ($@, $#, getopts)
Apprenez à transmettre des arguments à vos scripts et à analyser les options de la ligne de commande à l’aide de variables spéciales et de « getopts ».
Arguments et options des scripts ($@, $#, getopts) est une leçon Linux Command Line & Bash Scripting Mastery gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Linux Command Line & Bash Scripting Mastery, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Linux Command Line & Bash Scripting Mastery comprend 4 leçons au total.
Arguments de script : pourquoi les utiliser ?
Avez-vous déjà utilisé une commande comme ls -l ou cp file1 file2 ? -l, file1 et file2 sont tous des arguments ! Ils indiquent à la commande quoi faire ou sur quoi agir.
Dans les scripts Bash, les arguments rendent vos scripts flexibles. Au lieu de coder des valeurs en dur, votre script peut accepter une entrée directement depuis la ligne de commande lors de son exécution.
Accéder aux arguments positionnels
Lorsque vous exécutez un script avec des arguments, Bash les affecte automatiquement à des variables spéciales appelées paramètres positionnels.
- Le premier argument est
$1. - Le deuxième argument est
$2. - Et ainsi de suite, jusqu'à
$9.
Pour les arguments au-delà du neuvième, vous devez utiliser des accolades, comme ${10}, ${11}, etc. Ces variables contiennent les valeurs transmises à votre script.
Démonstration : arguments positionnels
Voyons comment accéder à ces arguments dans un script. Enregistrez-le sous le nom greet.sh et exécutez-le avec ./greet.sh Alice Bob.
#!/bin/bash
echo "Hello, $1!"
echo "Welcome, $2."
echo "The third argument (if any) is: $3"`$0` et `$#` : informations sur le script
Bash fournit quelques autres variables spéciales qui vous donnent des informations sur le script lui-même et sur ses arguments :
$0: contient le nom du script en cours d'exécution. Cette variable est utile pour les messages d'erreur ou la journalisation.$#: contient le nombre total d'arguments positionnels transmis au script.
Ces variables contribuent à rendre vos scripts plus robustes et plus faciles à utiliser.
Démonstration : `$0` et `$#`
Exécutez ce script avec différents nombres d'arguments, par exemple ./info.sh one two three ou simplement ./info.sh.
#!/bin/bash
echo "Script name: $0"
echo "Number of arguments received: $#"`$@` ou `$*` : tous les arguments
Vous devez parfois faire référence à tous les arguments en même temps. Bash propose deux possibilités :
$@: se développe en arguments distincts. Entre guillemets doubles ("$@"), chaque argument reste un mot distinct, même s'il contient des espaces. Cette forme est généralement recommandée pour les boucles.$*: se développe en une seule chaîne contenant tous les arguments. Entre guillemets doubles ("$*"), tous les arguments sont regroupés en un seul mot, séparés par le premier caractère deIFS(séparateur de champs interne, généralement une espace).
Utilisez toujours "$@" lorsque vous parcourez des arguments afin de préserver les espaces !
Démonstration : parcourir avec `"$@"`
Ce script montre comment "$@" gère correctement les arguments contenant des espaces. Exécutez-le ainsi : ./loop_args.sh hello "world wide" web
#!/bin/bash
echo "Processing arguments with \"$@\":"
for arg in "$@"; do
echo " Argument: [$arg]"
done
echo "\nProcessing arguments with \"$*\":"
for arg in "$*"; do
echo " Argument: [$arg]"
doneOptions : au-delà des arguments positionnels
Les arguments positionnels sont parfaits dans les cas simples, mais que faire si votre script a besoin d'options facultatives ou de paramètres nommés, comme -v pour le mode détaillé ou -f filename ?
C'est là qu'interviennent les options de la ligne de commande. Elles rendent les scripts plus flexibles et plus faciles à utiliser, en permettant aux utilisateurs de définir les paramètres dans n'importe quel ordre.
Bash fournit la commande getopts, conçue spécialement pour analyser ce type d'options.
Syntaxe de `getopts` : `optstring`
La syntaxe de base de getopts est la suivante : getopts optstring variable.
optstring: chaîne de caractères contenant les caractères d'option valides. Si une option nécessite un argument (comme-f filename), faites suivre le caractère de deux-points (par exemplef:).variable: nom d'une variable dans laquellegetoptsstockera le caractère de l'option en cours de traitement (par exempleopt).
getopts définit également OPTARG pour les arguments des options et OPTIND pour l'indice de l'argument suivant.
Démonstration : `getopts` de base
Ce script traite les options -v (mode détaillé) et -f (fichier). Essayez de l'exécuter : ./options.sh -v -f mydata.txt -x ou ./options.sh -vf mydata.txt
#!/bin/bash
while getopts "vf:" opt; do
case $opt in
v)
echo "Verbose mode enabled."
;;
f)
echo "File specified: $OPTARG"
;;
\?)
echo "Invalid option: -$OPTARG" >&2
;;
esac
doneVérification rapide : variables d'arguments
Considérez le script suivant et la manière dont il est exécuté :
#!/bin/bash
echo "Script: $0"
echo "Count: $#"
for arg in "$@"; do
echo "Arg: $arg"
doneSi vous exécutez : ./myscript.sh "Hello World" 123
Quelle sera la sortie ?
Récapitulatif : arguments et options
Excellent travail ! Vous avez appris à rendre vos scripts Bash beaucoup plus polyvalents :
- Arguments positionnels : utilisez
$1,$2, etc. pour accéder directement aux arguments. - Variables spéciales :
$0pour le nom du script,$#pour le nombre d'arguments et"$@"pour parcourir tous les arguments en toute sécurité. - Options de la ligne de commande : utilisez
getoptspour analyser les options nommées (comme-v) et leurs arguments (-f filename), afin de rendre vos scripts plus robustes et plus faciles à utiliser.
Entraînez-vous à les utiliser dans vos propres scripts pour créer des outils de ligne de commande puissants et flexibles !
Questions Fréquemment Posées
La leçon « Arguments et options des scripts ($@, $#, getopts) » est-elle gratuite ?
Oui — le texte complet de « Arguments et options des scripts ($@, $#, getopts) » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Linux Command Line & Bash Scripting Mastery, passe à CoddyKit PRO. Le cours Linux Command Line & Bash Scripting Mastery comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Arguments et options des scripts ($@, $#, getopts) » ?
Apprenez à transmettre des arguments à vos scripts et à analyser les options de la ligne de commande à l’aide de variables spéciales et de « getopts ». Tu pratiques Linux Command Line & Bash Scripting Mastery avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Linux Command Line & Bash Scripting Mastery ?
Aucune expérience préalable n'est requise. Linux Command Line & Bash Scripting Mastery sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Arguments et options des scripts ($@, $#, getopts) » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Linux Command Line & Bash Scripting Mastery ?
Oui. Chaque leçon Linux Command Line & Bash Scripting Mastery inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Structures de boucles (for, while)
- Fonctions dans les scripts Bash
- Arguments et options des scripts ($@, $#, getopts)
- L’instruction case et la correspondance de motifs