GNU/Linux >> Linux Esercitazione >  >> Linux

Bash/sh istruzione 'if else'

Si noti che se si desidera determinare se una variabile è impostata, probabilmente non si desidera utilizzare if/else o test ([). È più tipico fare cose come:

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

o

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

o

# 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

Ti stai imbattendo in una stupida limitazione del percorso sh espande gli argomenti. La riga 3 del tuo script viene espansa in:

if [ != ]

Quale sh non riesco a capire cosa farne. Prova questo brutto trucco per le dimensioni:

if [ x$JAVA_HOME != x ]

Entrambi gli argomenti devono essere non vuoti, quindi lanceremo semplicemente un x in entrambi e guarda cosa succede.

In alternativa, c'è un operatore separato per verificare se una stringa non è vuota:

if [ !-z $JAVA_HOME ]

(-z verifica se la stringa seguente è vuota.)


Il -n e -z opzioni sono test che dovrebbero essere usati qui:

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

Linux
  1. Come utilizzare l'istruzione if else condizionali nello script Bash

  2. 4 Esempi di istruzioni Awk If ( if, if else, if else if, :? )

  3. 5 Esempi di dichiarazioni di Bash Case

  4. Stampa l'output dell'istruzione cat nel ciclo di script bash

  5. Qual è l'uso di $# in Bash

Dichiarazione del caso Bash

Bash if..else Statement

Python if..else Istruzione

Bash Scripting – Case Statement

Bash If Else Sintassi con esempi

Comprendere Bash If Else e altre dichiarazioni condizionali