如果没有测试标志?
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;否则,它将获得由
.
扩展产生的空值
我不明白如何正确阅读它。这是一个没有任何类型的测试标志的 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;否则,它将获得由 .