GNU/Linux >> Tutoriels Linux >  >> Linux

Instruction Bash/sh 'if else'

Notez que si vous voulez déterminer si une variable est définie, vous ne voudrez probablement pas utiliser if/else ou test ([). Il est plus courant de faire des choses comme :

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

ou

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

ou

# 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

Vous vous heurtez à une limitation stupide de la façon dont sh développe les arguments. La ligne 3 de votre script est étendue à :

if [ != ]

Quel sh ne sait pas quoi faire avec. Essayez ce vilain hack pour la taille :

if [ x$JAVA_HOME != x ]

Les deux arguments doivent être non vides, nous lancerons donc simplement un x dans les deux et voyez ce qui se passe.

Alternativement, il existe un opérateur séparé pour tester si une chaîne n'est pas vide :

if [ !-z $JAVA_HOME ]

(-z teste si la chaîne suivante est vide.)


Le -n et -z les options sont des tests qui doivent être utilisés ici :

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

Linux
  1. Comment utiliser l'instruction conditionnelle if else dans le script bash

  2. Instruction Bash If-Else avec des exemples

  3. 4 Exemples d'instructions Awk If ( if, if else, if else if, :? )

  4. 5 exemples d'instructions Bash Case

  5. À quoi sert $# dans Bash

Déclaration de cas bash

Instruction Bash if..else

Instruction Python if..else

Bash Scripting - Déclaration de cas

Syntaxe Bash If Else avec exemples

Comprendre Bash If Else et d'autres instructions conditionnelles