【问题标题】:Easy way to set default values for variables in bash [duplicate]在bash中为变量设置默认值的简单方法[重复]
【发布时间】:2016-08-12 20:14:14
【问题描述】:

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

除了用大量的if ...; then ... fi 逐一测试之外,有没有一种干净的方法可以做到这一点?

【问题讨论】:

    标签: bash


    【解决方案1】:

    你可以像这样使用parameter expansion:

    foo=${foo:-default value}
    

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

    【讨论】:

    • 你为什么回答重复。
    • 我通常不会过多关注是否重复的问题。在这种情况下,我可能应该这样做。现在为时已晚:) ...
    【解决方案2】:

    你可以有两个文件:

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

    获取默认文件,然后是来自客户端的文件。这样,客户的价值观就会被覆盖。

    测试

    让我们拥有这两个文件:

    $ 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 中的值。

    【讨论】:

    • 哇!比参数扩展方式更干净,更容易维护,谢谢。
    • @LotusH 很高兴它对你有用:)
    猜你喜欢
    • 2018-09-27
    • 1970-01-01
    • 2017-01-02
    • 2014-03-12
    • 2019-11-29
    • 1970-01-01
    • 2021-12-07
    • 2015-01-04
    • 1970-01-01
    相关资源
    最近更新 更多