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