参数未设置或空时的参数扩展,如鱼中的 bash

问题描述

是否有与 bash 中的 parameter expansion 等效(或 [更好|替代] 选项)?

具体来说,我正在寻找 ${parameter:-word}“if parameter is unset or null”情况。

我在各种 bash init 脚本或 shell 脚本中有很多这样的行,我试图找到合理的替代方案。

var1="${XDG_CONfig_HOME:-$HOME/.config}"/foo
var2="${XDG_DATA_HOME:-$HOME/.local/share}"/foo
some-command "$var1" "$var2"

我还没有找到比编写大量这样的内联块更好的选择,这似乎过于冗长。

begin
    test -z "$XDG_CONfig_HOME" && set -l XDG_CONfig_HOME "$HOME"/.config
    test -z "$XDG_DATA_HOME" && set -l XDG_DATA_HOME "$HOME"/.local/share
    set var1 "$XDG_CONfig_HOME"/foo
    set var2 "$XDG_DATA_HOME"/bar
    some-command "$var1" "$var2"
end

我不想被要求在环境中设置 XDG_* 变量——如果它们未设置,我希望能够使用认值。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)