Unix Bash Shell脚本中的空string比较

我不为$ 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