8
votes

En Bash, comment puis-je avoir un ensemble d'arguments dans n'importe quel ordre aléatoire? Comme une paire de valeur de clé?

Exemple: xxx

ou un autre possible xxx

Je veux permettre mon script de prendre un ensemble d'arguments, dans n'importe quel ordre xxx

cetera


2 commentaires

Habituellement, IP et Port sont spécifiés dans un seul argument: 192.168.1.1:1985


@mouviciel je serais d'accord mais c'est juste à des fins de démonstration


3 Réponses :


8
votes

Vous pouvez utiliser getopts pour analyser les arguments de ligne de commande. Ce didacticiel est utile pour commencer.


0 commentaires

13
votes

Jetez un coup d'œil à getopts

getopts : getopts nom optstring [arg]
Analysez les arguments d'option.

getopts est utilisé par des procédures shell pour analyser les paramètres de position comme options.

optstring contient les lettres d'option à reconnaître; Si une lettre est suivie d'un côlon, l'option devrait avoir un argument, qui devrait être séparé de celui-ci par l'espace blanc.

Chaque fois qu'il est invoqué, Getopts placera la prochaine option dans la Nom de la variable de shell $, initialisant le nom s'il n'existe pas, et L'indice du prochain argument à traiter dans la coquille Variable OptinD. OptinD est initialisé à 1 chaque fois que la coque ou Un script shell est invoqué. Lorsqu'une option nécessite un argument, getopts place cet argument dans la variable de coquille optarg .

getopts rapporte des erreurs de l'une des deux manières. Si le premier personnage OPTSTRING est un point de colon, getopts utilise des rapports sur erreur silencieux. Dans Ce mode, aucun message d'erreur n'est imprimé. Si une option invalide est Vu, Getopts place le personnage d'option trouvé dans Optarg. Si un L'argument requis n'est pas trouvé, Getopts place A ': ' dans le nom et Définit OpTarg au caractère d'option trouvé. Si getopts n'est pas dans Mode silencieux et une option invalide sont observées, Getopts Places '?' dans Nom et désintensité OpTarg. Si un argument requis n'est pas trouvé, un '? ' est placé sous nom, Optarg est non défini et un message de diagnostic est imprimé.

Si la variable de coque OPTERR a la valeur 0, getopts désactive le imprimer des messages d'erreur, même si le premier caractère de Optstring n'est pas un côlon. OPTERR a la valeur 1 par défaut.

getopts n'ayant normalement pas analysé les paramètres de position ($ 0 - 9 $), mais si Des arguments supplémentaires sont donnés, ils sont analysés à la place.

statut de sortie :
Retourne le succès si une option est trouvée; échoue si la fin des options est rencontré ou une erreur se produit.


0 commentaires

5
votes

Ce script simple prend le numéro de port avec l'adresse p code> et IP avec i code> paramètre. xxx pré>

peut être exécuté de toutes les manières : p>

./ myscript -i 192.168.1.1 -p 1985 code> p>

ou p>

./ myscript -p 1985 -Je 192.168.1.1 Code> p>

Lorsque exécuté IT Impression: P>

ip address: 192.168.1.1
port number: 1985


0 commentaires