Bash getopts

Bash getopts
Parfois, nous devons lire des arguments et des options de ligne de commande dans les scripts bash. Les arguments de ligne de commande peuvent être facilement lus par des variables d'argument. Mais pour lire les arguments et les options de ligne de commande, Bash a utilisé une commande intégrée 'Getopts'. Cette commande peut être utilisée pour analyser les options courtes comme «-a» ou «-1» et les longues options comme «-package-name». Comment la commande `` getopts '' peut être utilisée pour analyser les arguments et les options de ligne de commande est affichée dans ce tutoriel en utilisant différents exemples.

Syntaxe:

Getopts OptString Name [Args]

Options:

Certaines options Getopts principalement utilisées sont mentionnées ici.

Étiqueter Description
-o ou-options Identifier l'option à un caractères.
-l ou -Longoptions Identifier les options à plusieurs caractères.
-n ou -nom Signaler les erreurs provenant de la commande getopts
-Q ou -quiet Désactiver les rapports d'erreur
-T ou-test Tester la version Getopts
-A ou -alternative Autoriser une longue option avec un seul '-'

Exemple-1: en utilisant un seul option

Cet exemple montre l'utilisation très simple de la commande getopts. Créer un fichier bash nommé 'Getopts1.sh 'avec le code suivant pour tester le code. Ici, tandis que Loop se poursuivra pour l'option de la commande getopts. La déclaration de cas vérifiera l'option. Si l'option est «C», le script imprimera «ma couleur préférée est bleu». Si l'option est «F», le script imprimera «mon plat préféré est la glace». Si l'option est «-m», le script imprimera «Mon film préféré est Titanic». Pour toute autre valeur d'option, «vous devez utiliser: [-c] ou [-f] ou [-m]».

#!/ bac / bash
# Lisez l'option et stockez dans la variable, Option $
lors de l'option GetOpts "CFM"; faire
cas $ option dans
c) # pour option c
Echo "Ma couleur préférée est le bleu"
;;
f) # pour option f
Echo "Mon plat préféré est la glace"
;;
m) # pour option m
Echo "Mon film préféré est Titanic"
;;
\? ) # Pour une option non valide
Echo "Vous devez utiliser: [-c] ou [-f] ou [-M]"
;;
ESAC
fait

Exécutez le script en utilisant quatre options, '-c', '-f', '-m' et '-k'.

$ bash getopts1.sh -c
$ bash getopts1.sh -f
$ bash getopts1.sh -m
$ bash getopts1.sh -k

Sortir:

Exemple-2: Utilisation d'option avec un seul argument

Cet exemple montre l'utilisation de la commande getopts avec un argument. Créer un fichier bash nommé 'getOPTS2.sh 'avec le code suivant pour tester le code. Ici, ':' est utilisé avec 'P' pour définir que la commande prendra l'argument avec l'option. Le script imprimera la valeur de l'argument avec une autre chaîne si l'argument avec l'option «-p» fournit au moment de l'exécution. Si une option fournira plutôt que «-p», il affichera un message d'erreur avec une valeur d'option. Si l'option «-p» fournira sans aucun argument, un autre message d'erreur imprimera.

#!/ bac / bash
tandis que Getopts "P:" Opt; faire
cas $ opt
p) # print la valeur de l'argument
Echo "j'aime la programmation $ optarg"
;;
\? )
# Erreur d'option d'empreinte
Echo "Option non valide: $ optarg" 1> & 2
;;
:)
# error de l'argument de l'imprimé
Echo "Option non valide: $ optarg nécessite un argument" 1> & 2
;;
ESAC
fait

Exécutez le script avec l'option -p et la valeur de l'argument «bash», avec seulement l'option -p et avec l'option -t.

$ bash getopts2.sh -p bash
$ bash getopts2.sh -p
$ bash getopts2.sh -t

Sortir:

Exemple-3: Utilisation de l'option avec plusieurs arguments

Cet exemple montre les utilisations de la commande getopts avec plusieurs arguments. Créer un script bash nommé Grtopts3.sh avec le code suivant pour tester le script. Selon le script, des valeurs d'argument séparées de virgule seront fournies de la ligne de commande.

Ici, l'option «-f» et la variable IFS sont utilisées pour diviser les arguments et stockés dans un tableau, $ numarr. Si les arguments séparés par des virgules fourniront, il imprimera le nombre total d'arguments. Deux options prendront en charge la commande. La somme des valeurs d'argument sera calculée et imprimée si l'option «-a» fournira les arguments. La multiplication des valeurs d'argument sera calculée et imprimée si l'option «-m» fournira les arguments.

#!/ bac / bash
tandis que Getopts "A: M:" Opt; faire
set -f; Ifs = ','
numarr = (2 $)
Echo "Nombre total d'arguments = $ # numarr [@]"
Case $ opt dans
a) résultat = 0
pour i dans "$ numarr [@]"; faire
((résultat = $ résultat + $ i))
fait
Echo "La somme de tous les arguments = $ résultat" ;;
m) Résultat = 1
pour i dans "$ numarr [@]"; faire
((résultat = $ résultat * $ i))
fait
Echo "La multiplication de tous les arguments = $ résultat" ;;
*) ECHO "Option ou argument non valide"
sortie 1
ESAC
fait

Exécutez les scripts avec l'option '-a' et trois arguments, avec l'option '-m' et trois arguments et l'option '-t' sans aucun argument.

$ bash getopts3.sh -a 3,2,5
$ bash getopts3.sh -m 3,2,5
$ bash getopts3.sh -t

Sortir:

Exemple-4: Utilisation de plusieurs options et arguments

Cet exemple montre l'utilisation de la commande getOPTS avec plusieurs options et plusieurs arguments. Créez un fichier bash nommé 'Getopts4.sh avec le code suivant pour tester l'exemple. Ici, deux options fonctionneront avec deux arguments séparément. Si aucune des options ne fournira, elle imprimera un message d'erreur.

#!/ bac / bash
tandis que Getopts "n: m:" Opt; faire
Case $ opt dans
n)
#Reading premier argument
Echo "Le nom de l'étudiant est $ optarg"> & 2
;;
m)
#Reading deuxième argument
Echo "et les marques est $ optarg"> & 2
;;
*)
# Message d'erreur d'empreinte
Echo "Option ou argument non valide $ optarg"
;;
ESAC
fait

Lorsque le script sera exécuté par l'option '-N' avec l'option 'Ella' et '-m' avec 85, alors deux instructions de cas seront vraies et imprimeront deux sorties. Lorsque le script s'exécutera uniquement par l'option '-n' avec 'ella', une seule instruction de cas sera vraie et imprimera une sortie. Lorsque le script est exécuté par l'option «-p», un message d'erreur imprimera.

$ bash getopts4.sh -n ella -m 85
$ bash getopts4.sh -n ella
$ bash getopts4.sh -p ella

Conclusion

Les utilisations de base de la commande `` getopts '' sont affichées dans ce tutoriel en utilisant les exemples ci-dessus. Espérons, après avoir pratiqué ce tutoriel, vous pourrez utiliser des options de ligne de commande et des arguments dans votre script bash.