我在.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中使用系统变量运行上述命令?
答案 0 :(得分:1)
尝试:
$> manuals=/usr/share/man/man<0-9>
$> zgrep -c compinit ${~manuals}/zsh*
'〜'告诉zsh在使用变量时执行<0-9>
的扩展。 zsh参考卡告诉您如何执行此操作以及更多操作。
答案 1 :(得分:0)
根据我的调查,zsh在 <>
替换之前执行$
替换。这意味着当您使用$
变体时,它首先尝试<>
替换(没有任何内容),然后$
替换(可行),并且您将使用包含{{ 1}}字符。
当您不使用<>
时,它首先尝试$manuals
替换并且它有效。这是一个有序的问题。下面的最终版本显示了如何推迟扩展,以便它们同时发生:
这些可以在这里看到:
<>