GNU/Linux >> Znalost Linux >  >> Linux

Bash/sh příkaz „jestli je to jinak“.

Všimněte si, že pokud chcete zjistit, zda je nastavena proměnná, pravděpodobně nebudete chtít použít if/else ani test ([). Typičtější je dělat věci jako:

# Abort if JAVA_HOME is not set (or empty)
: ${JAVA_HOME:?JAVA_HOME is unset}

nebo

# report the value of JAVA_HOME, or a default value
echo ${JAVA_HOME:-default value}

nebo

# Assign JAVA_HOME if it is unset (or empty)
: ${JAVAHOME:=default value}

if [ -z $JAVA_HOME  ]  
then  
    echo $JAVA_HOME  
else  
    echo "NO JAVA HOME SET"  
fi

Narážíte na hloupé omezení způsobu sh rozšiřuje argumenty. Řádek 3 vašeho skriptu se rozšiřuje na:

if [ != ]

Které sh nemůže přijít na to, co s tím. Vyzkoušejte tento ošklivý hack na velikost:

if [ x$JAVA_HOME != x ]

Oba argumenty musí být neprázdné, takže jednoduše vyvoláme x do obou a uvidíte, co se stane.

Případně existuje samostatný operátor pro testování, zda řetězec není prázdný:

if [ !-z $JAVA_HOME ]

(-z testuje, zda je následující řetězec prázdný.)


-n a -z možnosti jsou testy, které by měly být použity zde:

if [ -n "$JAVAHOME" ]; then
    echo "$JAVAHOME";
else
    echo "\$JAVAHOME not set";
fi

Linux
  1. 4 Příklady prohlášení Awk If ( if, if else, if else if, :? )

  2. 5 Příklady prohlášení o případu Bash

  3. Existuje příkaz goto v bash?

  1. How To Echo A Bang!?

  2. Použití případových prohlášení v Bash

  3. Bash If-Else prohlášení s příklady

  1. 4 Příklady příkazů Bash If ( If then fi, If then else fi, If elif else fi, Nested if )

  2. Tiskový výstup příkazu cat ve smyčce skriptu bash

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