Es sieht so aus, als würden Sie Optionen in einem Shell-Skript behandeln. Hier ist die Redewendung dafür:
#! /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
(Es gibt einige Konventionen für das Einrücken von ;;
, und einige Shells erlauben es Ihnen, die Optionen als (--opt1)
anzugeben , um beim Anpassen von Klammern zu helfen, aber das ist die Grundidee)
Das hat bei mir funktioniert. Es tut genau das, was Sie gefragt haben und nicht mehr (keine Optionsverarbeitung). Ob das gut oder schlecht ist, ist eine Übung für das Plakat :)
if [[ "$*" == *YOURSTRING* ]]
then
echo "YES"
else
echo "NO"
fi
Dies nutzt die besondere Handhabung von $*
und bash super-test [[
…]]
Klammern.
Wie wäre es mit dem Durchsuchen (mit Wildcards) des gesamten Parameterraums:
if [[ [email protected] == *'-disableVenusBld'* ]]
then
Bearbeiten:Ok, ok, das war also keine beliebte Antwort. Wie wäre es mit diesem, es ist perfekt!:
if [[ "${@#-disableVenusBld}" = "[email protected]" ]]
then
echo "Did not find disableVenusBld"
else
echo "Found disableVenusBld"
fi
Edit2:Ok, ok, vielleicht ist das nicht perfekt ... Denke, es funktioniert nur, wenn -param am Anfang der Liste steht und auch mit -paramXZY oder -paramABC übereinstimmt. Ich denke immer noch, dass das ursprüngliche Problem sehr gut mit Bash-String-Manipulation gelöst werden kann, aber ich habe es hier nicht ganz geknackt ... -Kannst du??