function export_if_empty {
[[ -z "$1" ]] && declare -gx "${1}"="$2"
}
export_if_empty 'XDG_CONFIG_HOME' "$HOME/.config"
export_if_empty 'XDG_DATA_HOME' "$HOME/.local/share"
export_if_empty 'XDG_CACHE_HOME' "$HOME/.cache"
export_if_empty 'XDG_DATA_DIRS' '/usr/share:/usr/local/share'
export_if_empty 'XDG_CONFIG_DIRS' '/etc/xdg'
unset -f export_if_empty
這不起作用。即使 XDG_CONFIG_HOME 為空,-z 標志也無法正確識別它
請檢查此影像以了解我的意思
uj5u.com熱心網友回復:
您正在測驗字串XDG_CONFIG_HOME
本身,而不是名為 的變數的值XDG_CONFIG_HOME
。您需要間接引數擴展
[[ -z "${(P)1}" ]] && declare -gx "$1=$2"
該(P)
標志指定引數的值被用作另一個要擴展的變數的名稱,例如:
$ foo=bar bar=3
$ echo $foo
bar
$ echo ${(P)foo}
3
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/503771.html