Quiero entender if else
declaración en sh
scriptingsh/bash si else
Así que escribió el siguiente para averiguar si JAVA_HOME está situado en el entorno o no, que escribió el guión a continuación
#!/bin/sh
if [ $JAVA_HOME != "" ]
then
echo $JAVA_HOME
else
echo "NO JAVA HOME SET"
fi
Esta mi salida a env
sh-3.2$ env
SHELL=/bin/csh
TERM=xterm
HOST=estilor
SSH_CLIENT=10.15.16.28 4348 22
SSH_TTY=/dev/pts/18
USER=asimonraj
GROUP=ccusers
HOSTTYPE=x86_64-linux
PATH=/usr/local/bin:/bin:/home/asimonraj/java/LINUXJAVA/java/bin:/usr/bin
MAIL=/var/mail/asimonraj
PWD=/home/asimonraj/nix
HOME=/home/asimonraj
SHLVL=10
OSTYPE=linux
VENDOR=unknown
LOGNAME=asimonraj
MACHTYPE=x86_64
SSH_CONNECTION=100.65.116.248 4348 100.65.116.127 22
_=/bin/env
pero me sale debajo de la salida
sh-3.2$ ./test.sh
./test.sh: line 3: [: !=: unary operator expected
NO JAVA HOME SET
'if [" $ JAVA_HOME "! =" "]' También debería funcionar. –
@Keith Thompson: @diskwuff describe la convención estándar aquí. También funciona si '$ JAVA_HOME' se establece en otras cosas' test' se ahogará, aunque noto que 'bash' es bastante indulgente. – reinierpost
@reinierpost: ¿Está diciendo que el prefijo "x" es la convención estándar? Probablemente fue en un momento, pero no creo que sea necesario hoy, y rara vez lo veo. Los operandos no tienen que ser no vacíos, solo tienen que ser "palabras" individuales (donde una palabra puede ser la cadena vacía). (Puede ser que algunos shells muy antiguos no distinguen entre un argumento de '" "' y ningún argumento en absoluto, pero me sorprendería si algún shell en el uso actual común tuviera ese problema). –