GNU/Linux >> Tutoriales Linux >  >> Linux

Compruebe si alguno de los parámetros de un script bash coincide con una cadena

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?


Linux
  1. ¿Cómo pasar parámetros a un script Bash?

  2. Comprobar si existe una variable en una lista en Bash

  3. Cualquier forma de salir del script bash, pero sin salir de la terminal

  4. Bash Shell Script:busque una bandera y tome su valor

  5. Alcance variable para scripts y funciones bash shell en el script

Cómo verificar si una cadena contiene una subcadena en Bash

¿Cómo verifico la sintaxis de un script Bash sin ejecutarlo?

Devuelve una coincidencia de expresiones regulares en un script Bash, en lugar de reemplazarlo

Leer línea por línea en bash script

¿Cómo puedo obtener el último número de una cadena en bash?

¿Cuál es la mejor manera de verificar si un volumen está montado en un script Bash?