GNU/Linux >> Tutoriels Linux >  >> Linux

Bash Beginner Series #3 :Passer des arguments aux scripts Bash

Les arguments peuvent être utiles, surtout avec Bash !

Jusqu'à présent, vous avez appris à utiliser des variables pour rendre vos scripts bash dynamiques et génériques, afin qu'ils répondent à diverses données et à différentes entrées utilisateur.

Dans ce didacticiel, vous apprendrez comment transmettre des variables à un script bash à partir de la ligne de commande.

Acheter le livre électronique "Apprendre Bash rapidement"

Passer un argument à un script shell bash

Le script suivant count_lines.sh affichera le nombre total de lignes qui existent dans le fichier saisi par l'utilisateur :

#!/bin/bash

echo -n "Please enter a filename: "
read filename
nlines=$(wc -l < $filename)

echo "There are $nlines lines in $filename"

Par exemple, l'utilisateur peut saisir le fichier /etc/passwd et le script crachera le nombre de lignes en conséquence :

Ce script fonctionne bien; cependant, il existe une bien meilleure alternative !

Au lieu de demander à l'utilisateur le nom du fichier, nous pouvons faire en sorte que l'utilisateur passe simplement le nom du fichier comme argument de ligne de commande lors de l'exécution du script comme suit :

./count_lines.sh /etc/passwd

Le premier argument bash (également connu sous le nom de paramètre positionnel) est accessible dans votre script bash en utilisant le $1 variables.

Ainsi, dans le script count_lines.sh, vous pouvez remplacer la variable de nom de fichier par $1 comme suit :

#!/bin/bash

nlines=$(wc -l < $1)
echo "There are $nlines lines in $1"

Notez que je me suis également débarrassé des commandes read et first echo car elles ne sont plus nécessaires !

Enfin, vous pouvez exécuter le script et passer n'importe quel fichier en argument :

./count_lines.sh    /etc/group
There are 73 lines in /etc/group

Passer plusieurs arguments à un script shell bash

Vous pouvez passer plus d'un argument à votre script bash. En général, voici la syntaxe de transmission de plusieurs arguments à n'importe quel script bash :

script.sh arg1 arg2 arg3  …

Le deuxième argument sera référencé par le $2 variable, le troisième argument est référencé par $3 , .. etc.

Le $0 variable contient le nom de votre script bash au cas où vous vous poseriez la question !

Nous pouvons maintenant modifier notre count_lines.sh bash pour qu'il puisse compter les lignes de plusieurs fichiers :

#!/bin/bash

n1=$(wc -l < $1)
n2=$(wc -l < $2)
n3=$(wc -l < $3)

echo "There are $n1 lines in $1"
echo "There are $n2 lines in $2"
echo "There are $n3 lines in $3"

Vous pouvez maintenant exécuter le script et passer trois fichiers comme arguments au script bash :

Comme vous pouvez le voir, le script affiche le nombre de lignes de chacun des trois fichiers ; et inutile de dire que l'ordre des arguments compte, bien sûr.

Obtenir une création avec des arguments dans Bash shell

Il existe de nombreuses commandes Linux.

Certains d'entre eux sont un peu compliqués car ils peuvent avoir une longue syntaxe ou un long éventail d'options que vous pouvez utiliser.

Heureusement, vous pouvez utiliser des arguments bash pour transformer une commande difficile en une tâche assez simple !

Pour démontrer, jetez un oeil au suivant find.sh script bash :

#!/bin/bash

find / -iname $1 2> /dev/null

C'est un script très simple qui peut pourtant s'avérer très utile ! Vous pouvez fournir n'importe quel nom de fichier comme argument au script et il affichera l'emplacement de votre fichier :

Vous voyez à quel point c'est maintenant beaucoup plus facile que de taper toute la commande de recherche ! C'est une preuve que vous pouvez utiliser des arguments pour transformer n'importe quelle commande longue et compliquée sous Linux en un simple script bash.

Si vous vous interrogez sur le 2> /dev/null , cela signifie que tout message d'erreur (comme le fichier inaccessible) ne sera pas affiché à l'écran. Je suggère de lire sur la redirection stderr sous Linux pour acquérir plus de connaissances sur ce sujet.

Astuce bonus :variables spéciales dans le shell Bash

Bash a beaucoup de variables spéciales intégrées qui sont très pratiques et sont disponibles à votre disposition.

Le tableau ci-dessous met en évidence les variables bash intégrées spéciales les plus courantes :

Variable spéciale Description
0 $ Le nom du script bash.
1$, 2$...n$ Les arguments du script bash.
$$ L'ID de processus du shell actuel.
$# Le nombre total d'arguments passés au script.
[email protected] La valeur de tous les arguments passés au script.
$ ? Le statut de sortie de la dernière commande exécutée.
€ ! L'ID de processus de la dernière commande exécutée.

Pour voir ces variables spéciales en action ; jetez un oeil aux variables.sh suivants script bash :

#!/bin/bash

echo "Name of the script: $0"
echo "Total number of arguments: $#"
echo "Values of all the arguments: [email protected]"

Vous pouvez maintenant passer les arguments de votre choix et exécuter le script :

Très bien, ceci nous amène à la fin de ce chapitre. J'espère que vous réalisez maintenant à quel point les arguments bash peuvent être puissants et utiles.

Besoin de pratique, téléchargez ce PDF et entraînez-vous à passer des arguments aux scripts bash avec des défis de script simples. Leurs solutions sont également incluses.

Bash Chapter 3 Practice QuestionsProblems et leur solution pour mettre en pratique ce que vous venez d'apprendre dans ce chapitreBash-Chapter-3-Practice-Questions-Linux-Handbook.pdf30 KB

Après cela, jetez un œil au chapitre suivant où je vais montrer que vous pouvez créer et utiliser des tableaux dans vos scripts bash.


Linux
  1. Gestion des erreurs dans les scripts Bash

  2. Ajouter des arguments et des options à vos scripts Bash

  3. Utiliser l'extension .sh ou .bash pour les scripts bash ?

  4. automatiser la session telnet à l'aide de scripts bash

  5. Exécutez la commande bash sur le pipeline jenkins

Bash Beginner Series #2 :Comprendre les variables dans les scripts shell Bash

Bash Beginner Series #1 :Créez et exécutez votre premier script shell Bash

Bash Beginner Series #5 :Utilisation des opérateurs arithmétiques dans les scripts Bash

Bash Beginner Series #4 :Utiliser des tableaux dans Bash

Bash Beginner Series #6 :Opérations sur les chaînes dans Bash

Bash Beginner Series #10 :Automatisation avec Bash