GNU/Linux >> Tutoriales Linux >  >> Linux

declaración Bash/sh 'if else'

Tenga en cuenta que si desea determinar si una variable está configurada, probablemente no desee utilizar if/else o test ([). Es más típico hacer cosas como:

# 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

Te estás encontrando con una estúpida limitación de la forma sh amplía los argumentos. La línea 3 de su secuencia de comandos se está expandiendo a:

if [ != ]

Cual sh no puedo averiguar qué hacer con. Prueba este truco desagradable para ver el tamaño:

if [ x$JAVA_HOME != x ]

Ambos argumentos no deben estar vacíos, por lo que arrojaremos un x en ambos y ver qué pasa.

Alternativamente, hay un operador separado para probar si una cadena no está vacía:

if [ !-z $JAVA_HOME ]

(-z comprueba si la siguiente cadena está vacía.)


El -n y -z Las opciones son pruebas que deben usarse aquí:

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

Linux
  1. Cómo usar la declaración condicional if else en Bash Script

  2. ¿Cómo hacer eco de una explosión?

  3. 4 Ejemplos de declaraciones If de Bash (If then fi, If then else fi, If elif else fi, Nested if)

  4. Imprima la salida de la declaración cat en el bucle de script bash

  5. ¿Cuál es el uso de $# en Bash?

Declaración de caso Bash

Declaración de Bash if..else

Declaración de Python if..else

Bash Scripting – Declaración de caso

Sintaxis de Bash If Else con ejemplos

Comprender Bash If Else y otras declaraciones condicionales