Comment passer les arguments de ligne de commande dans un script shell

Comment passer les arguments de ligne de commande dans un script shell

Les scripts bash sont des fichiers texte simples qui contiennent une collection de commandes. Les scripts Bash peuvent aider avec les tâches administratives, l'automatisation des tâches et l'exécution de plusieurs commandes. Ils sont utilisés pour automatiser les tâches / actions récurrentes.

Nous pouvons mettre toutes les commandes qui s'exécutent sur le terminal dans un script bash et vice versa. Les scripts bash incluent des concepts de programmation impératifs comme les boucles, les conditions et les fonctions.

Les arguments en ligne de commande sont des paramètres spécifiés avec le nom de fichier du script bash au moment de l'exécution. Les arguments en ligne de commande permettent au script d'effectuer des actions dynamiques en fonction de l'entrée:

Comment passer un argument à un script shell

Pour passer un paramètre à un script bash, écrivez-le simplement après le nom du script bash dans le terminal:

./ My-Test-Script.argument  

Comment transmettre plusieurs arguments au script shell

Vous pouvez également spécifier plusieurs arguments séparés par l'espace avec le nom du fichier de script bash:

./ My-Test-Script.sh arg_1 arg_2 arg_3… arg_n  

Nous pouvons utiliser les variables prédéfinies pour rappeler ces arguments dans le script bash. Le premier argument peut être rappelé par 1 $, le second par 2 $, et ainsi de suite. La variable prédéfinie "0 $" fait référence au script bash lui-même. La liste des autres variables prédéfinies importantes est donnée ci-dessous:

  • [Protégé par e-mail] : Valeurs de tous les arguments
  • $ # : Nombre total d'arguments
  • $$ : ID de processus du shell actuel

Nous allons maintenant utiliser un fichier bash nommé animaux.shot par exemple.

#!/ Bin / Bash Echo "L'animal dans la première enceinte est: 1 $" L'écho "L'animal dans la deuxième enceinte est: 2 $" Echo "L'animal dans la troisième enceinte est: 3" Echo "Le nombre total d'animaux dans le zoo sont: $ # "echo" Les noms de tous les animaux sont: $ @ "
1234567#!/ Bin / Bash Echo "L'animal dans la première enceinte est: 1 $" L'écho "L'animal dans la deuxième enceinte est: 2 $" Echo "L'animal dans la troisième enceinte est: 3" Echo "Le nombre total d'animaux dans le zoo sont: $ # "echo" Les noms de tous les animaux sont: [Protégé par e-mail] "

Maintenant, nous allons exécuter ce script dans le terminal:

Comment passer un argument contenant de l'espace

Si un argument se compose de plusieurs mots séparés par l'espace, nous devons l'enfermer en citations uniques pour la passer en un seul argument:

#!/ bin / bash echo "Mon nom est: 1 $"
123#!/ bin / bash echo "Mon nom est: 1 $"

Comment passer les arguments avec des caractères spéciaux

Nous pouvons également passer des caractères spéciaux comme arguments. Mais ils doivent être écrits avec des barres à barres avant eux.

#!/ bac / bash echo "Combien d'argent avez-vous dépensé aujourd'hui: 1 $"
123#!/ bac / bash echo "Combien d'argent avez-vous dépensé aujourd'hui: 1 $"

Passer des arguments à l'aide de drapeaux et d'options dans le script shell

L'utilisation de drapeaux et d'options est un autre moyen courant de donner la contribution à un script bash. Une option est toujours suivie d'une valeur tandis que les drapeaux ne sont suivis d'une valeur.

Tout d'abord, nous ferons un nouveau script bash qui prend deux arguments (options) différents i.e. -n / - nom pour le nom, et -I / - ID pour un numéro d'identification.

#!/ bin / bash args = $ (getOpt -a --options n: i: --long "name:, id:" - "$ @") evset set - "$ args" tandis que true; faire cas "1 $" in -n | --name) name = "2 $" echo "name: $ name" shift 2 ;; -i | --id) identification = "2 $" echo "id: $ identification" shift 2 ;; --) casser;; ESAC fait
1234567891011121314151617181920#!/ bin / bash args = $ (getOpt -a --options n: i: --long "name :, id:" - "[e-mail protégé]") eval set - "$ args" tandis que true; faire cas "1 $" in -n | --name) name = "2 $" echo "name: $ name" shift 2 ;; -i | --id) identification = "2 $" echo "id: $ identification" shift 2 ;; --) casser;; esacdone

Dans le code donné ci-dessus d'abord, nous avons créé une variable qui stocke tous les noms courts et longs de nos options. Sur la deuxième ligne, nous avons évalué le Args variable. Ensuite, nous avons utilisé une boucle de temps pour attribuer un bloc de code à chaque option.

Dans le code ci-dessus, le décalage est utilisé pour ignorer les valeurs des variables. Le chiffre qui suit le changement définit le nombre de variables sautées.

De la même manière

Maintenant, nous allons ajouter un -V drapeau qui imprime un menu verbeux:

#!/ bin / bash args = $ (getOpt -a --options n: i: v - long "name :, id :, verbose" - "$ @") eval set - "$ args" tandis que true; faire cas "1 $" in -n | --name) name = "2 $" echo "name: $ name" shift 2 ;; -i | --id) identification = "2 $" echo "id: $ identification" shift 2 ;; -v | --verbose) echo "Veuillez utiliser -n / - nom ou -i / - id pour passer le nom ou le numéro d'identification respectivement" Break ;; --) casser;; ESAC fait
1234567891011121314151617181920212223#!/ bin / bash args = $ (getOPt -a --options n: i: v - long "nom :, id :, verbose" - "[e-mail protégé]") evset set - "$ args" tandis que vrai ; faire cas "1 $" in -n | --name) name = "2 $" echo "name: $ name" shift 2 ;; -i | --id) identification = "2 $" echo "id: $ identification" shift 2 ;; -v | --verbose) echo "Veuillez utiliser -n / - nom ou -i / - id pour passer le nom ou le numéro d'identification respectivement" Break ;; --) casser;; esacdone

Les drapeaux ne sont pas suivis d'un côlon lorsqu'ils sont définis dans un script bash car ils ne prennent aucun argument avec eux contrairement aux options e.g. le -n L'option prend un nom avec lui comme Rahul.

Conclusion

Un opérateur humain effectuant manuellement des tâches récurrentes est très inefficace. De telles tâches devraient donc être automatisées. Les scripts peuvent nous aider à faire cela.

Dans cet article, nous avons appris à passer des arguments via la ligne de commande à un script bash. Les arguments en ligne de commande nous aident à écrire des scripts dynamiques qui remplissent différentes fonctions en fonction de l'entrée.

De plus, nous avons également discuté de différents types d'arguments. Nous avons également touché un peu sur des variables prédéfinies.