【问题标题】:How can I define the default value for a variable in mkfile如何在 mkfile 中定义变量的默认值
【发布时间】:2019-08-08 00:35:50
【问题描述】:

生成文件:

XDG_CONFIG_HOME?=$HOME/.config

我想将该行转换为 Plan9 mkfile 语法。

我试过了

XDG_CONFIG_HOME=`{if(~ $XDG_CONFIG_HOME '') echo $HOME/.config; if not echo $XDG_CONFIG_HOME}

它有效,但它很丑。有什么选择吗?

【问题讨论】:

    标签: shell plan-9 rc-shell


    【解决方案1】:

    mk(1) 不提供这种内置方式来定义变量,只有当它们不是非空的环境变量时。实际上,贝尔实验室的任何 make(1) 和 POSIX make(1) 都没有提供这样的方法,?= 语法只是 GNU 扩展。

    您通常会在您的mkfile 中正常设置变量:

    XDG_CONFIG_HOME = $home/.config
    

    并覆盖mk(1)命令中的变量:

        ; mk 'XDG_CONFIG_HOME='^$home^'/cfg'
    

    【讨论】:

      【解决方案2】:

      在shell中,“:-”用于将变量设置为默认值,以防变量没有值:

      XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-$HOME/.config}
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-07
      • 1970-01-01
      • 2012-09-06
      • 1970-01-01
      • 2020-12-01
      • 2016-05-08
      相关资源
      最近更新 更多