GNU/Linux >> Linux Esercitazione >  >> Linux

Controlla se uno qualsiasi dei parametri di uno script bash corrisponde a una stringa

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??


Linux
  1. Script Bash:controlla se un file è un file di testo?

  2. Restituisce una corrispondenza regolare in uno script Bash, invece di sostituirla

  3. Controlla se esiste una variabile in un elenco in Bash

  4. Qualsiasi modo per uscire dallo script bash, ma non uscire dal terminale

  5. Come posso ottenere l'ultimo numero dalla stringa in bash?

Come verificare se una stringa contiene una sottostringa in Bash

Come impostare i parametri quando Pipe Bash Script su Bash?

Come dividere una stringa nello script Bash

Come posso controllare la sintassi di uno script Bash senza eseguirlo?

Come posso controllare i caratteri letterali di una stringa di comando bash?

Qual è il modo migliore per verificare se un volume è montato in uno script Bash?