Mam całą masę testów zmiennych w skrypcie powłoki bash (3.00), gdzie jeśli zmienna nie jest ustawiona, to przypisuje domyślną, np .:
if [ -z "${VARIABLE}" ]; then
FOO='default'
else
FOO=${VARIABLE}
fi
Wydaje mi się, że pamiętam, że w jednej linii jest trochę składni, coś przypominającego trójskładnikowego operatora, np .:
FOO=${ ${VARIABLE} : 'default' }
(choć wiem, że to nie zadziała ...)
Czy jestem szalony, czy może coś takiego istnieje?
Odpowiedzi:
Bardzo blisko tego, co opublikowałeś, w rzeczywistości:
Albo, co nada
default
sięVARIABLE
również:źródło
Dla argumentów wiersza poleceń:
która przypisuje
VARIABLE
wartość pierwszego argumentu przekazanego do skryptu lub wartość,DEFAULTVALUE
jeśli taki argument nie został przekazany.źródło
Jeśli zmienna jest taka sama, to
przypisuje DEFAULT_VALUE do VARIABLE, jeśli nie zdefiniowano. Podwójne cudzysłowy zapobiegają globowaniu i dzieleniu wyrazów.
Zobacz także Rozdział 3.5.3, Rozszerzanie parametrów powłoki , w podręczniku Bash.
źródło
HISTTIMEFORMAT
: ${FOO:=DEFAULT1} ${BAR:=DEFAULT2}
Nawet ty możesz użyć jako wartości domyślnej wartości innej zmiennej
mając plik
defvalue.sh
uruchom
./defvalue.sh first-value second-value
dane wyjściowei uruchom
./defvalue.sh first-value
dane wyjścioweźródło
patrz tutaj pod 3.5.3 (rozszerzenie parametrów powłoki)
więc w twoim przypadku
źródło
Aby odpowiedzieć na twoje pytanie i na wszystkich podstawieniach zmiennych
źródło
FWIW, możesz podać komunikat o błędzie w następujący sposób:
Wyświetla taki komunikat i kończy działanie z kodem 1:
Bardziej kompletny przykład wszystkiego:
Wynik:
$ACTION
przyjmuje wartość pierwszego argumentu i kończy działanie, jeśli jest pusty$DIRNAME
jest drugim argumentem i domyślnie jest to bieżący katalog$OUTPUT_DIR
Argument jest 3 lub$HOMEDIR
(jeśli jest zdefiniowana) indziej/tmp
. Działa to w systemie OS X, ale nie jestem pewien, czy jest przenośny.źródło
Jest też sposób na zwięzłe wyrażenie swojej konstrukcji „jeśli”:
źródło
Oto przykład
zapisz to jako script.sh i uczyń z niego wykonywalnym. uruchom go bez parametrów
uruchom to z param
źródło