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

标签 bash

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

GUI=1 ./my_bash_script.sh

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

if [ -n "$GUI" ]; then

但是后来,我很随机地发现,仅测试没有选项的字符串似乎也可以按预期工作:

if [ "$GUI" ]; then

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

最佳答案

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

-n STRING
      the length of STRING is nonzero

STRING equivalent to -n STRING

关于没有选项的 Bash 测试似乎有效,但为什么呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17869163/

相关文章:

bash - 在命令上使用 AWK 来接收其输出的一部分

bash - Expect 脚本不会将日期命令的 bash 替换扩展为 send

bash 提示符 : highlight command being entered

Bash 使用 GNU parallel 发送多个 curl 请求

linux - 如果特定字符串在 bash 中使用 sed 在模式之间匹配,则在前后添加字符串

bash - 从命令替换中获取退出代码

linux - 如何在不同的源目录中复制同名文件并在目标目录中重命名?

linux - Bash 脚本退出清理

linux - 如何执行具有并发和等待限制的多个命令?

bash - 获取脚本目录的 bash 脚本的 zsh 等价物是什么?