在初始化变量

时间:2016-06-04 11:41:46

标签: javascript ruby bash initialization logical-operators

有时我会在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脚本中使用类似的cinstruction,但它不能按预期工作,因为nil或null值不存在,所以表达式:

$0||"1.0"

总是给出$ 0的值,即使它是一个空字符串“”。 是否可以在bash脚本中使用类似的简写语法?

1 个答案:

答案 0 :(得分:1)

bash中,您可以使用分配默认值参数expansion operator

: ${a:=1.0}
  

${parameter:=word}
  如果parameter未设置或为空,则word的扩展会分配给parameter

:命令是一个无操作,它被使用,因此我们可以在其参数列表中执行参数扩展。

相关问题