Analyser les arguments de ligne de commande dans Bash

Fumbani Banda 30 janvier 2023
  1. Analyser les paramètres de position dans Bash
  2. Analyser les arguments avec des drapeaux dans Bash
  3. Analyser les arguments avec une construction de boucle dans Bash
  4. Analyser les arguments avec shift dans Bash
Analyser les arguments de ligne de commande 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
Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub