【发布时间】:2016-08-12 20:14:14
【问题描述】:
我有一堆从客户端代码传递过来的环境变量,如果没有设置,我需要给它们设置默认值。
除了用大量的if ...; then ... fi 逐一测试之外,有没有一种干净的方法可以做到这一点?
【问题讨论】:
标签: bash
我有一堆从客户端代码传递过来的环境变量,如果没有设置,我需要给它们设置默认值。
除了用大量的if ...; then ... fi 逐一测试之外,有没有一种干净的方法可以做到这一点?
【问题讨论】:
标签: bash
你可以像这样使用parameter expansion:
foo=${foo:-default value}
如果未定义或为空(!),这会将$foo 设置为"default value"。
请注意,使用上面的代码,您无法区分尚未定义的变量和已明确设置为空字符串的变量。如果这对您来说没问题,请使用它。
【讨论】:
你可以有两个文件:
获取默认文件,然后是来自客户端的文件。这样,客户的价值观就会被覆盖。
让我们拥有这两个文件:
$ 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 中的值。
【讨论】: