HOWTO · Bash

Analyser les arguments de ligne de commande dans Bash

Cela montre différentes manières d'analyser les arguments dans bash en tant que paramètres de position, en utilisant des drapeaux, en utilisant la construction de boucle et en utilisant l'opérateur shift

Sur cette page

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