Vypadá to, že provádíte manipulaci s volbami ve skriptu shellu. Zde je idiom:
#! /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
(Existuje několik konvencí pro odsazení ;;
a některé shelly umožňují zadat volby jako (--opt1)
, pomoci s párováním rovnátek, ale toto je základní myšlenka)
Tohle mi fungovalo. Dělá přesně to, co jste požadovali, a nic víc (žádné zpracování možností). Zda je to dobře nebo špatně, je cvičení pro plakát :)
if [[ "$*" == *YOURSTRING* ]]
then
echo "YES"
else
echo "NO"
fi
To využívá speciální zpracování $*
a bash super-test [[
…]]
závorky.
Co takhle prohledat (pomocí zástupných znaků) celý prostor parametrů:
if [[ [email protected] == *'-disableVenusBld'* ]]
then
Edit:Dobře, dobře, takže to nebyla populární odpověď. Co říkáte na tento, je dokonalý!:
if [[ "${@#-disableVenusBld}" = "[email protected]" ]]
then
echo "Did not find disableVenusBld"
else
echo "Found disableVenusBld"
fi
Edit2:Dobře, dobře, možná to není dokonalé... Myslím, že to funguje, pouze pokud je -param na začátku seznamu a bude také odpovídat -paramXZY nebo -paramABC. Stále si myslím, že původní problém lze velmi pěkně vyřešit manipulací se strunami bash, ale tady jsem to úplně nerozlouskl... -Můžete??