Shell 如何在mkfile中定义变量的默认值

Shell 如何在mkfile中定义变量的默认值,shell,plan-9,rc-shell,Shell,Plan 9,Rc Shell,生成文件: XDG_CONFIG_HOME?=$HOME/.config 我想将该行转换为Plan9 mkfile语法 我试过了 XDG_CONFIG_HOME=`{if(~ $XDG_CONFIG_HOME '') echo $HOME/.config; if not echo $XDG_CONFIG_HOME} 它起作用了,但很难看。任何替代方法?在shell中,如果变量没有值,则使用“:-”将变量设置为默认值: XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-$H

生成文件:

XDG_CONFIG_HOME?=$HOME/.config
我想将该行转换为Plan9 mkfile语法

我试过了

XDG_CONFIG_HOME=`{if(~ $XDG_CONFIG_HOME '') echo $HOME/.config; if not echo $XDG_CONFIG_HOME}
它起作用了,但很难看。任何替代方法?

在shell中,如果变量没有值,则使用“:-”将变量设置为默认值:

XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-$HOME/.config}
只有当变量不是非空环境变量时,mk(1)才提供这样一种内置的定义变量的方法。实际上,贝尔实验室的make(1)和POSIX make(1)都没有提供这样的方法,
?=
语法只是GNU扩展

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

XDG_CONFIG_HOME = $home/.config
并覆盖mk(1)命令中的变量:

也许这对你有用:
    ; mk 'XDG_CONFIG_HOME='^$home^'/cfg'