Parece que está manejando opciones en un script de shell. Aquí está el modismo para eso:
#! /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
(Hay un par de convenciones para sangrar el ;;
, y algunos shells le permiten dar las opciones como (--opt1)
, para ayudar con la combinación de llaves, pero esta es la idea básica)
Esto funcionó para mí. Hace exactamente lo que pediste y nada más (sin opción de procesamiento). Si eso es bueno o malo es un ejercicio para el cartel :)
if [[ "$*" == *YOURSTRING* ]]
then
echo "YES"
else
echo "NO"
fi
Esto aprovecha el manejo especial de $*
y bash superprueba [[
…]]
corchetes.
¿Qué hay de buscar (con comodines) en todo el espacio de parámetros:
if [[ [email protected] == *'-disableVenusBld'* ]]
then
Editar:Ok, ok, entonces esa no fue una respuesta popular. ¡Qué tal este, es perfecto!:
if [[ "${@#-disableVenusBld}" = "[email protected]" ]]
then
echo "Did not find disableVenusBld"
else
echo "Found disableVenusBld"
fi
Edit2:Ok, ok, tal vez esto no sea perfecto... Creo que funciona solo si -param está al comienzo de la lista y también coincidirá con -paramXZY o -paramABC. Sigo pensando que el problema original se puede resolver muy bien con la manipulación de cadenas de bash, pero no lo he resuelto aquí... -¿Puedes?