我想了解if else
聲明sh
腳本SH/bash的,如果else語句
所以我寫了下面找出是否JAVA_HOME是在環境中設置或不,我寫了下面的腳本
#!/bin/sh
if [ $JAVA_HOME != "" ]
then
echo $JAVA_HOME
else
echo "NO JAVA HOME SET"
fi
這是我輸出到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
,但我得到下面輸出
sh-3.2$ ./test.sh
./test.sh: line 3: [: !=: unary operator expected
NO JAVA HOME SET
'if [「$ JAVA_HOME」!=「」]'也應該有效。 –
@Keith Thompson:@diskwuff描述了這裏的標準約定。它也適用於'$ JAVA_HOME'被設置爲'test'會阻塞的其他事物,但我注意到'bash'非常寬鬆。 – reinierpost
@reinierpost:你是說「x」前綴是標準約定嗎?這可能是一次,但我認爲這不是必要的,我很少看到它。操作數不一定非空,它們只需要是單個「單詞」(其中一個單詞可以是空字符串)。 (這可能是因爲一些非常古老的炮彈根本沒有區分''''的參數和根本沒有參數,但是如果目前普遍使用的任何炮彈都有這個問題,我會感到驚訝的。) –