在bash中设置变量默认值的简便方法

时间:2016-04-20 09:07:55

标签: bash

我有一堆从客户端代码传递的环境变量,如果没有设置,我需要为它们设置默认值。

除了使用大量if ...; then ... fi一个一个地测试它们之外,还有一种干净的方法吗?

2 个答案:

答案 0 :(得分:3)

您可以有两个文件:

  • 包含变量默认值的文件。
  • 客户端文件

从默认文件中获取,然后从客户端获取该文件。这样,客户的价值将被覆盖。

测试

让我们拥有这两个文件:

$ cat default 
export var1="foo"
export var2="bar"
export var3="bee"

$ cat customer 
export var2="yeah!"

现在,让我们来源:

$ source default 
$ env | grep "^var"
var1=foo
var3=bee
var2=bar

然后让我们获取customer的文件:

$ source customer
$ env | grep "^var"
var1=foo
var3=bee
var2=yeah!

如您所见,变量$var2没有来自customer文件的值,而其他文件的值为default中的值。

答案 1 :(得分:0)

您可以像这样使用parameter expansion

foo=${foo:-default value}

如果未定义{空}(!),则会将$foo设置为"default value"。 请注意,使用上面的代码,您无法区分尚未定义的变量和已显式设置为空字符串的变量。如果这对您没问题,请使用它。