GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Bash/sh 'if else'-Anweisung

Beachten Sie, dass Sie, wenn Sie feststellen möchten, ob eine Variable gesetzt ist, wahrscheinlich weder if/else noch test ([) verwenden möchten. Es ist üblicher Dinge zu tun wie:

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

oder

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

oder

# 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

Sie stoßen auf eine dumme Einschränkung des Weges sh erweitert Argumente. Zeile 3 Ihres Skripts wird erweitert zu:

if [ != ]

Welche sh kann nicht herausfinden, was zu tun ist. Probieren Sie diesen fiesen Hack für die Größe aus:

if [ x$JAVA_HOME != x ]

Beide Argumente müssen nicht leer sein, also geben wir einfach x aus in beide und sehen was passiert.

Alternativ gibt es einen separaten Operator zum Testen, ob ein String nicht leer ist:

if [ !-z $JAVA_HOME ]

(-z testet, ob der folgende String leer ist.)


Die -n und -z Optionen sind Tests, die hier verwendet werden sollten:

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

Linux
  1. So verwenden Sie die Bedingungsanweisung if else in Bash-Skript

  2. Wie man einen Knall wiederholt!?

  3. Bash-If-Else-Anweisung mit Beispielen

  4. 4 Beispiele für Awk-If-Anweisungen ( if, if else, if else if, :? )

  5. 5 Beispiele für Bash-Case-Anweisungen

Bash-Case-Statement

Bash if..else-Anweisung

Python if..else-Anweisung

Bash-Skripting – Case-Statement

Bash If Else Syntax mit Beispielen

Bash If Else und andere bedingte Anweisungen verstehen