我有一堆从客户端代码传递的环境变量,如果没有设置,我需要为它们设置默认值。
除了使用大量if ...; then ... fi
一个一个地测试它们之外,还有一种干净的方法吗?
答案 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"
。
请注意,使用上面的代码,您无法区分尚未定义的变量和已显式设置为空字符串的变量。如果这对您没问题,请使用它。