Comment passer des paramètres au script Bash
Écrivez un script Bash afin qu’il accepte les arguments spécifiés lorsque le script est invoqué à partir de la ligne de commande.Cette méthode est utilisée lorsque le script doit exécuter une fonction légèrement différente en fonction de la valeur d’un paramètre d’entrée, également appelé argument.
Fil de vie / Zheng Ran
Exemple de passage de paramètres dans le script Bash
Si vous développez un Statistiques Lors du comptage des mots dans un fichier, il est conseillé de passer le nom du fichier en paramètre afin que le même script puisse être utilisé pour tous les fichiers qui seront traités.Par exemple, si le nom du fichier à traiter est liste de chansonssaisissez ce qui suit sur la ligne de commande :
sh stats.sh liste de lecture
class= »syntaxe-ql »>
Accéder aux paramètres dans les scripts à l’aide de variables 1 $, 2 USD, 3 $, etc.variable 1 $ fait référence au premier paramètre, 2 USD au deuxième argument, et 3 $ au troisième argument. Par exemple, dans un script :
FILE1=$1wc $FILE1
class= »syntaxe-ql »>
Affectez une variable avec un nom descriptif à la valeur du premier argument (
1 $), puis appelez le Word Count Utility (WC) sur la variable $fichier1 ou toute autre chose que vous voudriez faire.
Si vous avez besoin d’un nombre variable d’arguments, utilisez $@ variable, qui est un tableau de tous les paramètres d’entrée. Ce processus parcourt chaque boucle à l’aide d’une boucle « for », comme illustré dans l’exemple suivant :
Pour FILE1 dans « $@ » dowc $FILE1done
class= »syntaxe-ql »>
Voici un exemple d’appel de ce script avec des arguments de ligne de commande :
sh stats.sh liste de chansons 1 liste de chansons 2 liste de chansons 3
class= »syntaxe-ql »>
Si le paramètre contient des espaces, placez-le entre guillemets simples. Par exemple:
sh stats.sh ‘liste de chansons 1’ ‘liste de chansons 2’ ‘liste de chansons 3’
class= »syntaxe-ql »>
Méthode du drapeau
Un script est généralement écrit de manière à ce que les arguments puissent être passés dans n’importe quel ordre à l’aide d’indicateurs. En utilisant la méthode flags, certains paramètres peuvent être facultatifs.
Par exemple, écrivez un script qui récupère des informations d’une base de données en fonction de paramètres spécifiés, par ex. nom d’utilisateur, Dateet produit, et générez un rapport au format spécifié. Le script doit être écrit de manière à ce que ces paramètres soient passés lorsque le script est appelé. Cela pourrait ressembler à ceci :
makereport -u jsmith -p notebook -d 10-20-2011 -f pdf
class= »syntaxe-ql »>
Basculer via obtenir la sélection Une fonction.Pour l’exemple ci-dessus, utilisez obtenir la sélection comme suit:
tandis que getopts u:d:p:f: options
Fais
cas « ${options} »
exister
u) utilisateur=${OPTARG} ; ;
d) date=${OPTARG} ; ;
p) produit=${OPTARG} ; ;
f) format=${OPTARG} ; ;
ECOSOC
Achevée
class= »syntaxe-ql »>
C’est une boucle while qui utilise obtenir la sélection fonction et la soi-disant sélectionner la chaîne-Dans ces circonstances u:d:p:f :– Traverser les arguments.Ce même si Bouclez dans optstring contenant les indicateurs utilisés pour transmettre le paramètre et affectez la valeur de paramètre fournie pour l’indicateur à la variable Choix. Ce Cas instruction affecte alors la valeur de la variable Choix Une variable globale utilisée après que tous les arguments ont été lus.
sens du côlon
Un deux-points dans optstring indique que l’indicateur correspondant nécessite une valeur.Dans l’exemple ci-dessus u:d:p:f :, tous les drapeaux sont suivis de deux-points. Cela signifie que tous les drapeaux nécessitent une valeur.Par exemple, si ré et F Les drapeaux ne doivent pas avoir de valeur, u:dp:f sera optstring.
Les deux-points principaux mettent getopts en « mode de rapport silencieux ». Pas un script complètement faux, mais un bourrage de paramètre inattendu ? options, vous pouvez rechercher ou traiter au besoin. S’il n’y a pas de deux-points initial dans optstring, le terminal affichera une erreur. Par exemple, j’ai le script ci-dessus qui compte les mots. Il nécessite une syntaxe telle que « stats.sh -f filename ». Sans les deux-points, si j’essaie « stats.sh -h », j’obtiens :
stats.sh -h
stats.sh : option illégale –h
En utilisant les deux-points, cependant, je peux ajouter une ligne à mon script qui attend quelque chose comme ça, comme – ?) echo « Aucun argument -${OPTARG} trouvé. »;; . Cela me permet ensuite d’attraper et de gérer les entrées inattendues (dans Dans ce cas, en affichant mon propre message d’erreur).
stats.sh -h
-h paramètre introuvable.
Les arguments sans drapeaux précédents sont ignorés obtenir la sélectionSi le script est invoqué sans les drapeaux spécifiés dans optstring, rien ne se passera à moins que vous ne traitiez spécifiquement ce cas dans votre code.quelconque dessus de porte peut toujours être capturé avec des 1 $, 2 USDet 3 $ variable.
Merci de nous en informer!
Dites-nous pourquoi !
D’autres détails ne sont pas assez difficiles à comprendre