Comment gérer les arguments de ligne de commande dans un script Bash

How Handle Command Line Arguments Bash Script



Dans de nombreux cas, les scripts bash nécessitent des valeurs d'argument pour fournir des options d'entrée au script. Vous pouvez gérer les arguments de ligne de commande dans un script bash de deux manières. L'une consiste à utiliser variables d'argument et une autre consiste à utiliser getopts fonction. La façon dont vous pouvez gérer les arguments de ligne de commande est illustrée dans ce didacticiel.

Utilisation de variables d'argument :

La variable d'argument commence à partir de 0 $. Le nom du fichier de script principal est stocké dans $0 qui reçoit les valeurs des arguments des arguments de la ligne de commande. Si deux arguments sont passés en ligne de commande, les valeurs des arguments seront reçues séquentiellement dans les variables $1 et $2.







Exemple -1 : Envoi de trois valeurs numériques comme arguments

Créez un fichier bash et ajoutez le code suivant. Le script recevra trois valeurs d'argument et sera stocké dans $1, $2 et $3. Il comptera le nombre total d'arguments, affichera les valeurs des arguments avec et sans boucle. Enfin, imprimez la somme de toutes les valeurs d'argument.



#!/bin/bash

# Comptage du nombre total d'arguments
chassèrent 'Nombre total d'arguments : $#'

# Lecture des valeurs des arguments individuellement
chassèrent 'Valeur du premier argument : $1'
chassèrent 'Valeur du deuxième argument : $2'
chassèrent 'Valeur du troisième argument : 3 $'

# Lecture des valeurs des arguments à l'aide d'une boucle
pourargvaldans ' [email protégé] '
faire
chassèrent -n '$argval'
terminé

# Ajout de valeurs d'argument
somme= $((1 $+2 $+3 $))

# imprimer le résultat
chassèrent -Et ' Résultat de la somme =somme de $'

Exécutez le fichier bash avec trois valeurs d'argument numériques.



$frappercmdline1.shcinquante 35 quinze





Exemple -2 : Prendre le nom de fichier comme argument

Créez un fichier bash et ajoutez le code suivant pour compter le nombre total de caractères d'un fichier. Ici, le nom de fichier sera passé comme argument de ligne de commande.

#!/bin/bash
nom de fichier=1 $
totalchar=``wc -c $nom de fichier``
chassèrent 'Le nombre total de caractères est$ totalchar'

Exécutez le script bash avec le nom de fichier comme valeur d'argument unique et exécutez une autre commande pour vérifier le nombre total de caractères de ce fichier. Ici, le fichier employee.txt est utilisé comme valeur d'argument. Le nombre total de caractères du fichier employee.txt est de 204.



$frappercmdline2.sh employé.txt
$wc -cemployé.txt

Utilisation de la fonction getops :

Si vous souhaitez stocker des données dans une base de données ou un fichier ou créer un rapport sur un format particulier basé sur les valeurs d'arguments de la ligne de commande, alors getopts fonction est la meilleure option pour effectuer la tâche. C'est une fonction Linux intégrée. Ainsi, vous pouvez facilement utiliser cette fonction dans votre script pour lire les données formatées à partir de la ligne de commande.

Exemple -1 : Lecture d'arguments par la fonction getopts

Créez un fichier bash et ajoutez le script suivant pour comprendre l'utilisation de getopts fonction. La fonction 'getopts' est utilisée avec la boucle while pour lire les options d'argument de ligne de commande et les valeurs d'argument. Ici, 4 options sont utilisées qui sont 'dans M' et 'Et' . L'instruction case est utilisée pour faire correspondre l'option particulière et stocker la valeur de l'argument dans une variable. Enfin, imprimez les valeurs de la variable.

#!/bin/bash
tandis que getopts ':en moi:'en colère;faire
Cas $ argument dans
je) identifiant=$OPTARG;;
m) Nom=$OPTARG;;
m) Date de fabrication=$OPTARG;;
Et) Date d'expiration=$OPTARG;;
esac
terminé
chassèrent -Et ' $ID $Nom $Fabrication_date $date_expiration '

Exécutez le fichier avec les options et valeurs d'argument suivantes. Ici, p100 est la valeur de l'option -i, 'Hot Cake' est la valeur de l'option -n, '01-01-2018′ est la valeur de l'option -m et '06-01-2018′ est la valeur de - e option.

$frappercmdline3.sh-jep001-n 'Gâteau chaud' -m '01 -01-2018 ' -Et '06 -01-2018 '

Lorsque vous devez envoyer des valeurs simples dans un script, il est préférable d'utiliser des variables d'argument. Mais si vous souhaitez envoyer des données de manière formatée, il est préférable d'utiliser la fonction getopts pour récupérer les valeurs des arguments. Pour plus d'informations regardez la vidéo !