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 ??