Analyser les arguments de ligne de commande dans Bash
- Analyser les paramètres de position dans Bash
- Analyser les arguments avec des drapeaux dans Bash
- Analyser les arguments avec une construction de boucle dans Bash
-
Analyser les arguments avec
shift
dans Bash
Ce didacticiel illustre l’analyse des arguments de ligne de commande pour le script bash en tant que paramètres de position, à l’aide d’indicateurs, d’une construction de boucle et d’un opérateur de décalage.
Analyser les paramètres de position dans Bash
Les paramètres de position sont accessibles dans l’ordre dans lequel ils sont passés au script bash. Le premier paramètre est accessible par $1
, le second par $2
, et ainsi de suite.
echo "I am $1";
echo "And I live in $2";
Exécutez le script avec deux arguments positionnels :
bash positional_args.sh John USA
Production :
I am John
And I live in USA
Analyser les arguments avec des drapeaux dans Bash
Un drapeau commence par un tiret -
avant chaque argument. L’ordre des arguments n’a pas d’importance lorsque des indicateurs sont utilisés.
Dans le script ci-dessous, getopts
lit les drapeaux de l’entrée et OPTARG
le fait correspondre à la valeur correspondante.
while getopts n:c: flag
do
case "${flag}" in
n) name=${OPTARG};;
c) country=${OPTARG}
esac
done
echo "I am $name";
echo "And I live in $country";
Courir:
bash flags.sh -n fumbani -c Malawi
Production :
I am fumbani
And I live in Malawi
Analyser les arguments avec une construction de boucle dans Bash
La construction de boucle est utile lorsque la taille de l’argument n’est pas connue à l’avance. Le $@
est une variable contenant tous les paramètres d’entrée. La boucle for
itère sur tous les arguments et traite chaque argument passé.
i=1
for arg in "$@"
do
printf "argument $i: $arg\n"
i=$((i + 1 ))
done
Courir:
bash arguments_loop.sh USA Europe Africa Asia
Production :
argument 1: USA
argument 2: Europe
argument 3: Africa
argument 4: Asia
Analyser les arguments avec shift
dans Bash
L’opérateur shift
fait l’indexation des arguments à partir de la position décalée. Dans notre cas, nous décalons les arguments de 1
jusqu’à ce que nous atteignions la fin. $#
fait référence à la taille de l’entrée, et 1
fait référence à l’argument suivant à chaque fois.
i=1
max=$#
while (( $i <= $max ))
do
printf "Argument $i: $1\n"
i=$((i + 1 ))
shift 1
done
Courir:
bash shift.sh one two three
Production :
Argument 1: one
Argument 2: two
Argument 3: three