${ (%):-%n} 是什么意思?

Cla*_*ent 3 shell zsh

我不知道“ ${ (%):-%n} ”是什么意思。

${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh
Run Code Online (Sandbox Code Playgroud)

的输出echo ${(%):-%n}是我的用户名。

输出:
输出

che*_*ner 5

(%)是一个参数扩展标志,特别是使在参数的值提示转义序列来扩展所述一个。例如,

% x="%n"
% echo $x
%n
% echo ${(%)x}
pi
Run Code Online (Sandbox Code Playgroud)

:-没有参数名称的运算符会导致以下文本被视为扩展的值:

% echo ${:-%n}
%n
Run Code Online (Sandbox Code Playgroud)

把它们放在一起,你会得到一个扩展到你当前用户名的表达式。字符串%n是参数扩展的结果,它也经历了快速扩展。

% echo ${(%):-%n}
pi
Run Code Online (Sandbox Code Playgroud)