Sembra che tu stia eseguendo la gestione delle opzioni in uno script di shell. Ecco l'idioma per questo:
#! /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
(Ci sono un paio di convenzioni per indentare ;;
e alcune shell ti permettono di dare le opzioni come (--opt1)
, per aiutare con l'abbinamento delle parentesi graffe, ma questa è l'idea di base)
Questo ha funzionato per me. Fa esattamente quello che hai chiesto e niente di più (nessuna elaborazione delle opzioni). Che sia un bene o un male è un esercizio per il poster :)
if [[ "$*" == *YOURSTRING* ]]
then
echo "YES"
else
echo "NO"
fi
Questo sfrutta la gestione speciale di $*
e bash super-test [[
…]]
parentesi.
Che ne dici di cercare (con caratteri jolly) l'intero spazio dei parametri:
if [[ [email protected] == *'-disableVenusBld'* ]]
then
Modifica:Ok, ok, quindi non era una risposta popolare. Che ne dici di questo, è perfetto!:
if [[ "${@#-disableVenusBld}" = "[email protected]" ]]
then
echo "Did not find disableVenusBld"
else
echo "Found disableVenusBld"
fi
Edit2:Ok, ok, forse questo non è perfetto ... Penso che funzioni solo se -param è all'inizio dell'elenco e corrisponderà anche -paramXZY o -paramABC. Continuo a pensare che il problema originale possa essere risolto molto bene con la manipolazione delle stringhe di bash, ma non l'ho ancora risolto qui... -Puoi??