GNU/Linux >> Znalost Linux >  >> Linux

Zkontrolujte, zda některý z parametrů bash skriptu odpovídá řetězci

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


Linux
  1. Bash Echo Příkazový řádek spuštěn na samotném příkazovém řádku (ne ve skriptu)?

  2. Jak nastavit parametry, když Pipe Bash Script to Bash?

  3. Jak rozdělit řetězec ve skriptu Bash

  1. Jak zkontrolovat, zda řetězec obsahuje podřetězec v Bash

  2. Vraťte shodu s regulárním výrazem ve skriptu Bash namísto jeho nahrazení

  3. Bash Shell Script - Zkontrolujte, zda nemáte příznak a zjistěte jeho hodnotu

  1. Variabilní rozsah pro skripty bash shell a funkce ve skriptu

  2. Jak zkontrolovat, zda soubor existuje v konkrétním adresáři ve skriptu bash?

  3. Jaké je použití $# v Bash