Arguments de ligne de commande

Arguments de ligne de commande
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 en ligne de commande dans un script bash de deux manières. L'un est en utilisant Variables d'argument, Et un autre est en utilisant les getopts fonction. Comment vous pouvez gérer les arguments en ligne de commande est indiqué dans ce tutoriel.

Utilisation des variables d'argument:

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

Exemple -1: Envoi de trois valeurs numériques dans les arguments de la ligne de commande

Créez un fichier bash avec le script suivant. Le script recevra des valeurs à trois arguments et les stockera en variables de 1 $, 2 $ et 3 $. Il comptera le nombre total d'arguments et d'impression des valeurs d'argument à l'aide d'une boucle sans boucle. La somme de toutes les valeurs d'argument sera imprimée plus tard.

#!/ bac / bash
# Compter le nombre total d'arguments
Echo "Nombre total d'arguments: $ #"
# Lecture des valeurs d'argument individuellement
Echo "Première valeur d'argument: 1 $"
Echo "Deuxième valeur d'argument: 2 $"
Echo "Troisième valeur d'argument: 3 $"
# Lecture des valeurs d'argument à l'aide de la boucle
pour Argval dans "$ @"
faire
echo -n "$ argval"
fait
# Ajouter des valeurs d'argument
sum = $ ((1 $ + 2 $ + 3 $))
# Imprimez le résultat
echo -e "\ nresult de sum = $ sum"

La sortie suivante apparaîtra après avoir exécuté le fichier de script avec trois valeurs d'argument numérique, 50, 35 et 15.

$ bash cmdline1.SH 50 35 15

Exemple -2: prendre le nom de fichier comme argument

Créez un fichier bash avec le script suivant pour compter le nombre total de caractères de n'importe quel fichier. Ici, le nom de fichier sera passé comme un argument en ligne de commande.

#!/ bac / bash
nom de fichier = 1 $
totalchar = 'wc -c $ nom de fichier'
ECHO "Le nombre total de caractères est $ TotalChar"

Exécutez le script bash avec le nom de fichier en tant que valeur d'argument unique et exécutez une autre commande pour vérifier le nombre total de caractères de ce fichier. Ici, le jour de la semaine.Le fichier txt est utilisé comme valeur d'argument. Le nombre total de personnages en semaine.Le fichier txt est 57.

$ bash cmdline2.Sh shndday.SMS
$ wc -c en semaine.SMS

Utilisation de la fonction Getopts:

Si vous souhaitez stocker des données dans la base de données ou n'importe quel fichier ou créer un rapport dans un format particulier basé sur les valeurs d'arguments de ligne de commande, alors le getopts La 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 -3: lecture des arguments par la fonction getopts

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

#!/ bac / bash
tandis que les getopts ": i: n: m: e:" arg; faire
cas $ arg dans
i) id = $ optarg ;;
n) name = $ optarg ;;
m) manufacturing_date = $ optarg ;;
e) expire_date = $ optarg ;;
ESAC
fait
echo -e "\ n $ id $ name $ manufacturing_date $ expire_date \ n"

Exécutez le fichier avec les options et valeurs d'argument suivantes. Ici, P100 est la valeur de l'option -i, 'Gâteau chaud"est la valeur de l'option -n"01-01-2021'est la valeur de -m option et'06-01-2021'est la valeur de l'option -e.

$ bash cmdline3.Sh -i P001 -N 'Hot Cake' -M '01 -01-2021 '-E '06 -01-2021'

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 d'argument. Les utilisations des variables d'arguments et des options GetOpts se sont montrées dans l'exemple suivant.

Exemple-4: Lire des arguments et des arguments normaux avec les options Getopts

Les façons de lire des arguments en ligne de commande à l'aide de variables d'argument et d'options GetOpts ont été affichées séparément dans des exemples précédents de ce tutoriel. Mais ces deux façons peuvent être utilisées dans un seul script pour lire les valeurs d'argument de la ligne de commande. Créez un script bash avec le code suivant pour lire les valeurs d'argument de la ligne de commande transmises par les options GetOpts et les paramètres d'argument. Ici, trois options Getopts ont été utilisées pour lire le nom d'hôte, le nom d'utilisateur et le mot de passe de la ligne de commande. Ensuite, la commande Shift a été utilisée pour supprimer toutes les options GetOpts de la commande pour lire les valeurs de ligne de commande à l'aide de variables d'argument. Ce script lira et imprimera un maximum de trois valeurs des variables d'argument. Si aucune valeur d'argument sans option ne sera donnée après l'exécution du code, alors un message sera imprimé; Sinon, les valeurs de la variable d'argument seront imprimées.

#!/ bac / bash
# Lire des arguments avec les options Getopts
tandis que Getopts 'H: U: P:' Option; faire
cas "$ option" dans
h)
# Imprimer le nom d'hôte
echo "Le nom d'hôte est $ optarg" ;;
u)
# Imprimer le nom d'utilisateur
Echo "le nom d'utilisateur est $ optarg" ;;
p)
# Mot de passe imprimé
Echo "Le mot de passe est $ optarg" ;;
*)
# Imprimer le message d'aide pour fournir de mauvaises options
Echo "Utilisation: 0 $ [-h valeur] [-u valeur] [-p valeur]"> & 2
# Se terminer du script
sortie 1 ;;
ESAC
fait
# Supprimer toutes les options passées par les options Getopts
Shift "$ (($ optind -1))"
# Lire les premiers arguments normaux
si [ ! -Z 1 $]; alors
Echo "Le premier nom de table est 1 $"
autre
écho "Aucun argument normal n'est donné."
sortie 1
Fi
# Lire les deuxièmes arguments normaux
si [ ! -Z 2 $]; alors
Echo "Le deuxième nom de table est de 2 $"
Fi
# Lire les troisième arguments normaux
si [ ! -Z 3 $]; alors
Echo "Le troisième nom de table est de 3 $"
Fi

La sortie suivante apparaîtra si la mauvaise option est donnée au moment de l'exécution du code. Ici, l'option -a n'existe pas dans le script.

La sortie suivante apparaîtra si les options valides avec les valeurs sont données dans la ligne de commande au moment de l'exécution du code.

La sortie suivante apparaîtra si les options valides et les valeurs d'argument normales sont utilisées dans la ligne de commande au moment de l'exécution du code. Ici, les arguments normaux sont client et employé.

En utilisant '$ @' pour lire les arguments en ligne de commande:

Les arguments en ligne de commande peuvent être lus sans utiliser de variables d'argument ou d'options de GetOpts. En utilisant '$ @'Avec le premier support est une autre façon de lire toutes les valeurs d'argument de la ligne de commande.

Exemple-5: lecture des valeurs d'argument de ligne de commande sans variable

Créez un fichier bash avec le script suivant pour lire les valeurs d'argument sans aucune variable d'argument et calculer la somme de trois valeurs d'argument de ligne de commande. "$ @" A été utilisé avec les premiers supports ici pour lire toutes les valeurs d'argument dans un tableau. Ensuite, la somme des trois premières valeurs de tableau sera imprimée.

#!/ bac / bash
# Lisez toutes les valeurs d'arguments
argvals = ("$ @")
# Vérifiez le nombre total d'arguments
Si [$ # -gt 2]
alors
# Calculez la somme de trois arguments de ligne de commande
sum = $ (($ argvals [0] + $ argvals [1] + $ argvals [2]))
Echo "La somme des 3 arguments de ligne de commande est $ sum"
Fi

La sortie suivante apparaîtra après avoir exécuté le script ci-dessus pour les valeurs d'argument 12, 20 et 90. La somme de ces chiffres est 122.

Conclusion:

Les moyens de fournir des valeurs d'argument de ligne de commande sans aucune option et avec des options se sont affichées ici. La façon de lire les valeurs d'argument de la ligne de commande sans utiliser de variables s'est montrée ici également. J'espère que ce tutoriel aidera les lecteurs à utiliser correctement les valeurs d'argument de la ligne de commande dans leur script bash.