Comprendre les bases des arguments de ligne de commande
Avant d'approfondir getopt, comprenons comment les scripts Bash traitent normalement les arguments de ligne de commande. En Bash, lorsque vous passez des arguments à un script, ils sont accessibles grâce à des variables spéciales :
$0
: Le nom du script lui-même
$1
, $2
, $3
, etc. : Les premiers, seconds, troisièmes, etc. arguments positionnels
$#
: Le nombre d'arguments passés au script
$@
: Tous les arguments passés au script
Créeons un script simple pour démontrer ce traitement de base des arguments de ligne de commande.
Création de votre premier script
-
Ouvrez le terminal dans votre environnement LabEx.
-
Accédez au répertoire du projet :
cd ~/projet
-
Créez un nouveau fichier appelé basic_args.sh
à l'aide de l'éditeur :
touch basic_args.sh
-
Ouvrez le fichier dans l'éditeur et ajoutez le contenu suivant :
#!/bin/bash
echo "Nom du script : $0"
echo "Premier argument : $1"
echo "Second argument : $2"
echo "Troisième argument : $3"
echo "Nombre total d'arguments : $#"
echo "Tous les arguments : $@"
-
Rendez le script exécutable :
chmod +x basic_args.sh
-
Exécutez le script avec quelques arguments :
./basic_args.sh pomme banane cerise
Vous devriez voir une sortie similaire à celle-ci :
Nom du script :./basic_args.sh
Premier argument : pomme
Second argument : banane
Troisième argument : cerise
Nombre total d'arguments : 3
Tous les arguments : pomme banane cerise
Limites du traitement d'arguments de base
Si cette approche de base fonctionne pour les scripts simples, elle présente plusieurs limites :
- Pas de distinction entre les options (comme
-f
ou --file
) et les arguments normaux
- Pas de moyen de gérer les options qui ont leurs propres arguments
- Pas de manière standard de valider l'entrée de l'utilisateur
- Difficile d'implémenter à la fois les options de forme courte et longue
Par exemple, si vous vouliez un script qui pourrait être appelé comme ceci :
./myscript.sh -f fichier.txt -o sortie.txt --verbose
Vous devriez analyser manuellement chaque argument pour déterminer s'il s'agit d'une option ou non, et gérer les paramètres associés. Cela devient rapidement complexe et propice aux erreurs.
C'est là que la commande getopt
intervient. Elle fournit une manière standardisée de gérer les options et les arguments de ligne de commande dans les scripts Bash.