GNU/Linux >> Tutoriels Linux >  >> Linux

Vérifiez si l'un des paramètres d'un script bash correspond à une chaîne

Il semble que vous gérez les options dans un script shell. Voici l'idiome pour cela :

#! /bin/sh -

# idiomatic parameter and option handling in sh
while test $# -gt 0
do
    case "$1" in
        --opt1) echo "option 1"
            ;;
        --opt2) echo "option 2"
            ;;
        --*) echo "bad option $1"
            ;;
        *) echo "argument $1"
            ;;
    esac
    shift
done

exit 0

(Il existe quelques conventions pour indenter le ;; , et certains shells vous permettent de donner les options sous la forme (--opt1) , pour aider à la correspondance des accolades, mais c'est l'idée de base)


Cela a fonctionné pour moi. Il fait exactement ce que vous avez demandé et rien de plus (pas de traitement d'option). Que ce soit bon ou mauvais, c'est un exercice pour l'affiche :)

if [[ "$*" == *YOURSTRING* ]]
then
    echo "YES"
else
    echo "NO"
fi

Cela profite de la gestion spéciale de $* et bash super-test [[]] crochets.


Que diriez-vous de rechercher (avec des caractères génériques) tout l'espace de paramètres :

if [[ [email protected] == *'-disableVenusBld'* ]]
then

Edit:Ok, ok, donc ce n'était pas une réponse populaire. Que diriez-vous de celui-ci, il est parfait ! :

if [[ "${@#-disableVenusBld}" = "[email protected]" ]]
then
    echo "Did not find disableVenusBld"
else
    echo "Found disableVenusBld"
fi

Edit2 :Ok, ok, peut-être que ce n'est pas parfait... Pensez que cela ne fonctionne que si -param est au début de la liste et correspondra également à -paramXZY ou -paramABC. Je pense toujours que le problème d'origine peut être très bien résolu avec la manipulation de chaînes bash, mais je ne l'ai pas tout à fait résolu ici... - Pouvez-vous ??


Linux
  1. Comment vérifier si la chaîne contient une sous-chaîne dans Bash

  2. Comment passer des paramètres à un script Bash ?

  3. N'importe quel moyen de quitter le script bash, mais sans quitter le terminal

  4. Portée variable pour les scripts shell bash et les fonctions dans le script

  5. Comment puis-je obtenir le dernier numéro de la chaîne dans bash?

Comment vérifier si une chaîne contient une sous-chaîne dans Bash

Comment vérifier la syntaxe d'un script Bash sans l'exécuter ?

Comment vérifier si un fichier existe dans un répertoire spécifique dans un script bash ?

À quoi sert $# dans Bash

Comment puis-je vérifier les caractères textuels d'une chaîne de commande bash ?

Quelle est la meilleure façon de vérifier si un volume est monté dans un script Bash ?