有时我在JavaScript中看到:
a||=1
这意味着 - 据我所知 - 如果未定义"a"或 null,则它被初始化为值 1,否则什么都不会发生。我在 Ruby 脚本中做同样的事情,例如,当命令行参数未传递时:
gamma=ARGV[0]||"1.0"
然后变量 gamma 从 ARGV[0] 获取其值,假设它不是 nil,传递了一个值,否则它将是 "1.0"。
这是一个很好的简写:
if ARGV[0]==nil then
gamma="1.0"
else
gamma=ARGV[0]
end
甚至:
gamma=ARGV[0]==nil ? "1.0" : ARGV[0]
我想在 ruby 脚本中使用类似的指令,但它没有按预期工作,因为不存在 nil 或 null 值,所以表达式:
$0||"1.0"
始终给出 $0 的值,即使它是空字符串 "。是否可以在 bash 脚本中使用类似的速记语法?
在bash
中,您可以使用"分配默认值"参数展开运算符。
: ${a:=1.0}
${parameter:=word}
如果parameter
未设置或为 null,则将word
的扩展分配给parameter
。
:
命令是一个 no-op,使用它只是为了我们可以在其参数列表中执行参数扩展。