Невозможно получить системную переменную для руководств
У меня есть следующая системная переменная в.zshrc
manuals='/usr/share/man/man<1-9>'
Я бегаю неудачно
zgrep -c compinit $manuals/zsh*
я получил
zsh: no matches found: /usr/share/man/man<1-9>/zsh*
Команда должна быть такой же, как следующая команда, которая работает
zgrep -c compinit /usr/share/man/man<1-9>/zsh*
Как вы можете запустить вышеуказанную команду с системной переменной в Zsh?
2 ответа
Судя по моим исследованиям, Zsh выполняет <>
замена до $
замена. Это означает, что когда вы используете $
вариант, он сначала пытается <>
замена (ничего там) тогда $
подстановка (которая работает), и вы остаетесь со строкой, содержащей <>
персонажи.
Когда вы не используете $manuals
сначала пробует <>
замена и это работает. Это вопрос порядка. В финальной версии ниже показано, как отложить расширение, чтобы оно произошло одновременно:
Это можно увидеть здесь:
> manuals='/usr/share/man/man<1-9>'
> echo $manuals
/usr/share/man/man<1-9>
> echo /usr/share/man/man<1-9>
/usr/share/man/man1 /usr/share/man/man2 /usr/share/man/man3
/usr/share/man/man4 /usr/share/man/man5 /usr/share/man/man6
/usr/share/man/man7 /usr/share/man/man8
> echo $~manuals
/usr/share/man/man1 /usr/share/man/man2 /usr/share/man/man3
/usr/share/man/man4 /usr/share/man/man5 /usr/share/man/man6
/usr/share/man/man7 /usr/share/man/man8
Пытаться:
$> manuals=/usr/share/man/man<0-9>
$> zgrep -c compinit ${~manuals}/zsh*
'~' Говорит zsh выполнить расширение <0-9>
при использовании переменной. Справочная карта Zsh расскажет вам, как это сделать и многое другое.