#shell #zsh
Вопрос:
Я не знаю, что означает «${ (%):-%n}«.
${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh
Вывод echo ${(%):-%n}
— это мое имя пользователя.
Комментарии:
1. Видеть: Что
:-
имею в виду в сценарии оболочки и Как оцениваются переменные внутри фигурных скобок2.@Nick, это не совсем помогает, так как имя параметра
${:-foo}
без параметра относится к zsh и там не упоминается
Ответ №1:
(%)
Это флаг расширения параметра, в частности тот, который вызывает расширение escape-последовательностей в значении параметра. Например,
% x="%n"
% echo $x
%n
% echo ${(%)x}
pi
:-
Оператор без имени параметра приводит к тому, что следующий текст рассматривается как значение расширения:
% echo ${:-%n}
%n
Сложите их вместе, и вы получите выражение, которое расширяется до вашего текущего имени пользователя. Строка %n
является результатом расширения параметра, которое также подвергается оперативному расширению.
% echo ${(%):-%n}
pi