没有选项的Bash测试似乎有效,但为什么呢?

时间:2013-07-25 21:35:47

标签: bash

我想将选项传递给我的bash脚本。如果设置了“GUI”选项,则应使用zenity进行输入和输出,而不是控制台。目前我正在将选项作为环境变量传递:

GUI=1 ./my_bash_script.sh

然后我发现我可以像这样测试变量的长度:

if [ -n "$GUI" ]; then

但是,随后,我发现只是测试没有选项的字符串似乎也按预期工作:

if [ "$GUI" ]; then

我已经阅读了test的手册条目,但如果您只传递一个没有任何参数的字符串,我看不到任何解释。我猜测如果它收到一个空字符串,它返回true,否则返回false?是这样的吗?

1 个答案:

答案 0 :(得分:4)

你是对的。来自test(1) man page

-n STRING
      the length of STRING is nonzero

STRING equivalent to -n STRING