我不为$ pass_tc11设置任何值; 所以它在回显时返回null。 如何比较它在if子句中?
这是我的代码。 我不希望“嗨”被打印…
-bash-3.00$ echo $pass_tc11 -bash-3.00$ if [ "pass_tc11" != "" ]; then > echo "hi" > fi hi -bash-3.00$
首先,请注意,您没有正确使用该变量:
if [ "pass_tc11" != "" ]; then # ^ # missing $
无论如何,要检查一个变量是否为空,您可以使用-z
– >该字符串为空:
if [ ! -z "$pass_tc11" ]; then echo "hi, I am not empty" fi
或-n
– >长度不为零:
if [ -n "$pass_tc11" ]; then echo "hi, I am not empty" fi
从man test
:
-Z STRING
STRING的长度为零
-n STRING
STRING的长度不为零
$ [ ! -z "$var" ] && echo "yes" $ $ var="" $ [ ! -z "$var" ] && echo "yes" $ $ var="a" $ [ ! -z "$var" ] && echo "yes" yes $ var="a" $ [ -n "$var" ] && echo "yes" yes
fedorqui有一个工作解决方案,但有另一种方法来做同样的事情。
如果设置了一个变量,则锁定
#!/bin/bash amIEmpty='Hello' # This will be true if the variable has a value if [ $amIEmpty ]; then echo 'No, I am not!'; fi
或者验证一个变量是否为空
#!/bin/bash amIEmpty='' # This will be true if the variable is empty if [ ! $amIEmpty ]; then echo 'Yes I am!'; fi
tldp.org有很好的文档,如果在bash中:
http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html