我不明白如何正确阅读。这是一个没有任何测试标志的IF语句,所以我不理解逻辑......帮助?
#!/bin/bash
get_user_input() {
if [[ $1 ]]; then
use_default=1
else
use_default=
fi
我知道这是一个功能。我理解它要求第一个位置论证(1美元),但我不理解为什么它在IF声明中,如果他们没有测试任何东西。
我的任务是从供应商那里重写一个脚本,他们就有这样的东西。我认为他们可能只是为了工作保障而故意复杂的事情?
我很感激帮助!
答案 0 :(得分:2)
来自man bash
,条件表达式:
string
-n string
True if the length of string is non-zero.
所以这与[[ -n $1 ]]
相同(虽然对熟悉其他shell的人来说明显不太可读)。就个人而言,我建议您使用[[ -n $1 ]]
明确表达所需的行为。
如果您对使脚本更具可移植性感兴趣,可以选择[ -n "$1" ]
。
答案 1 :(得分:0)
比使用if
语句更好的是使用以下参数扩展:
use_default=${1:+1}
如果$1
具有非空值,则use_default
设置为1;否则,它会获得$1
扩展产生的空值。