如果没有测试标志?

IF with no test flags?

我不明白如何正确阅读它。这是一个没有任何类型的测试标志的 IF 语句,所以我不明白其中的逻辑...帮助?

    #!/bin/bash
    get_user_input() {
      if [[  ]]; then
        use_default=1
      else
        use_default=
      fi

我明白这是一个函数。我知道它要求第一个位置参数 ($1),但我不明白为什么它在 IF 语句中,如果他们没有测试任何东西。

我受命重写供应商的脚本,他们到处都有这样的东西。我在想,也许他们只是为了工作保障而故意把复杂的事情搞砸了?

感谢您的帮助!

来自 man bash,在 条件表达式 下:

string
-n string
    True if the length of string is non-zero.

所以这与 [[ -n ]] 相同(尽管对于熟悉其他 shell 的人来说显然可读性较差)。就个人而言,我建议您使用 [[ -n ]] 来明确所需的行为。

如果您有兴趣使脚本更具可移植性,您应该选择 [ -n "" ]

比使用 if 语句更好的是使用以下参数扩展:

use_default=${1:+1}

如果</code>有一个非空值,<code>use_default设置为1;否则,它将获得由 .

扩展产生的空值