Utilisation de la commande «Shift» dans Bash

Utilisation de la commande «Shift» dans Bash
Lorsque les arguments en ligne de commande prennent des entrées de l'utilisateur, le premier argument contient le nom du script. Parfois, le nom du script est nécessaire pour omettre à des fins de programmation. Cette tâche peut être effectuée facilement en utilisant n'importe quelle boucle en bash. En utilisant le 'changement'La commande est une autre façon de faire la tâche. Cette commande est utilisée pour déplacer un paramètre de position vers la gauche par défaut. Les différentes utilisations du 'changementLa commande dans Bash s'est montrée dans ce tutoriel.

Syntaxe:

La syntaxe de la commande 'shift' est donnée ci-dessous. Cette commande a un argument facultatif utilisé pour définir le nombre de positions qui seront décalées vers la gauche. L'argument doit être positif. Si la valeur de l'argument est définie sur 0, alors aucun argument de ligne de commande ne sera décalé. Si aucun argument n'est utilisé, alors un argument de ligne de commande sera décalé par défaut.

Shift [n]

Exemple-1: Imprimez toutes les valeurs d'argument de ligne de commande

Créez un fichier bash avec le script suivant pour imprimer les valeurs d'argument de la ligne de commande à l'aide de la commande `` Loop Without 'Shift' 'et `` While' Loop avec la commande 'shift'. Chaque valeur d'argument sera stockée dans la variable, la valeur quand le pour Loop s'exécutera et cette variable sera imprimée plus tard. Le commencer la variable a utilisée dans le alors que boucle pour lire chaque valeur d'argument en utilisant le 'changement«Commandez et terminez la boucle lorsque tous les arguments de ligne de commande sont imprimés. Une variable de comptoir, je, a été utilisé dans le script pour afficher le numéro de l'argument. Si aucun argument de ligne de commande n'est donné au moment de l'exécution, alors une chaîne vide sera définie pour le premier argument, et rien ne sera imprimé.

#!/ bac / bash
# Printent les valeurs aegument de ligne de commande en utilisant pour et bien que la boucle
#St le compteur
i = 1
Echo "Les valeurs d'argument sans commande shift:"
#Iterate toutes les valeurs en utilisant pour la boucle
pour la valeur dans "$ @"
faire
Echo "Argument non. $ i = $ valeur "
((i ++))
fait
# Réinitialiser le compteur
i = 1
#St l'argument facultatif
start = $ 1: - ""
Echo "Les valeurs d'argument en utilisant la commande shift:"
#Iterate toutes les valeurs en utilisant la boucle
tandis que ["$ start" != ""];
faire
Echo "Argument non. $ i = $ start "
#Shift chaque argument par 1
changement
démarrer = 1 $
((i ++))
fait

Sortir:

Selon la sortie suivante, le script ci-dessus a été exécuté avec trois valeurs d'argument de ligne de commande. Les valeurs d'argument sont imprimées deux fois en utilisant la boucle pour et lors de la boucle avec le 'changement' commande.

Exemple-2: Imprimez les valeurs d'argument de la position uniforme

Dans l'exemple précédent, aucun argument n'a utilisé avec le 'changement«Commande, et la valeur de l'argument a été décalée de 1 à gauche. L'utilisation de l'argument facultatif du 'changement'La commande est affichée dans cet exemple. Créez un fichier bash avec le script suivant pour imprimer les valeurs d'argument de la ligne de commande de la position uniforme. Le nombre total d'arguments en ligne de commande a compté et stocké dans la variable total, Et il a été utilisé dans le alors que boucle pour itérer la boucle. Le 'changement'La commande a été utilisée avec l'argument Valeur 2 pour déplacer deux arguments de ligne de commande dans chaque itération de la boucle. Chaque argument en ligne de commande des positions pair sera imprimée avec de l'espace après avoir exécuté le script.

#!/ bac / bash
#Couptez le nombre total d'arguments de ligne de commande
Total = $ #
Echo "Total les arguments sont: $ total"
Echo "Les valeurs d'argument de la position pair sont:"
tandis que [$ total -ge0];
faire
# Print la valeur de l'argument avec l'espace
Echo -N 1 $ ""
#Shift deux arguments
Shift 2
#Decmenment le compteur par 2
((total = $ total-2))
fait
#Add New Line
écho

Sortir:

Selon la sortie suivante, le script ci-dessus a exécuté six valeurs d'argument de ligne de commande sans le nom du script. Après imprimer la valeur 89, la valeur suivante de la position pair est de 34 et la valeur suivante de la position pair est 12.

Exemple-3: Lisez les valeurs particulières des arguments spécifiques

La façon de lire des valeurs d'argument de ligne de commande spécifiques à l'aide du 'changementLa commande sans utiliser de boucle s'est montrée dans cet exemple. Créez un fichier bash avec le script suivant. Le nombre total d'arguments en ligne de commande a été compté dans le script, et si la valeur totale est inférieure à 6, le script sera terminé en affichant un message d'erreur. Si les six arguments de ligne de commande sont donnés correctement, le deuxième argument contiendra le nom d'hôte, le quatrième argument contiendra le nom d'utilisateur et le sixième argument contiendra le mot de passe. Le nom d'hôte sera stocké dans une variable en décalant un argument à gauche. Le nom d'utilisateur sera stocké dans une variable en décalant deux arguments restants. Le mot de passe sera stocké dans une variable en décalant à nouveau deux arguments laissés. Ensuite, le nom d'hôte, le nom d'utilisateur et les valeurs de mot de passe seront comparés à trois valeurs de chaîne pour authentifier l'utilisateur.

#!/ bac / bash
#Couptez le nombre total d'arguments de ligne de commande
Total = $ #
#Check Les 6 valeurs d'argument sont données ou non
si [$ total -lt6]; alors
Echo "Nombre non valide d'arguments."
autre
#Shift un argument
Shift 1
#Read la valeur du nom d'hôte
nom d'hôte = 1 $
#Shift deux arguments
Shift 2
#Read la valeur du nom d'utilisateur
Nom d'utilisateur = 1 $
#Shift deux arguments
Shift 2
#Read la valeur du mot de passe
mot de passe = 1 $
Fi
# Cochez les valeurs de l'authentification
Si [[$ hostname == "localhost" && $ username == "Fahmida" && $ mot de passe == "1234"]]; alors
écho "l'authentification réussie."
autre
écho "l'authentification infructueuse."
Fi

Sortir:

Selon la sortie, le script ci-dessus a été exécuté deux fois avec six valeurs d'argument. Dans la première exécution, les données valides ont été transmises et un message de réussite a imprimé. Lors de la deuxième exécution, des données non valides ont été adoptées et un message de défaillance a imprimé.

Conclusion:

La commande 'shift' est une commande très utile pour lire des valeurs d'argument de ligne de commande particulières. Différentes utilisations de cette commande ont été décrites dans ce tutoriel en utilisant plusieurs exemples pour aider les lecteurs à comprendre le but de l'utilisation de cette commande dans Bash Script.