Zsh没有在变量中扩展路径

时间:2017-07-24 18:44:02

标签: zsh

我想将带有globs的路径放在zsh中的变量中,然后在各种命令中使用它,但是无法弄清楚如何做到这一点......

└➜  path_var="expansion_test/{loc,diff-loc}*"

但是如果我尝试使用变量,我会收到一个错误:

┌~/temp 
└➜  ls -l $path_var
ls: cannot access expansion_test/{loc,diff-loc}*: No such file or directory
┌~/temp 
└➜  ls -l $~path_var
zsh: no matches found: expansion_test/{loc,diff-loc}*

这是没有匹配发现错误真的很奇怪:

┌~/temp 
└➜  ls -l expansion_test/{loc,diff-loc}*
expansion_test/diff-loc:
total 0
-rw-r--r-- 1 maxims eng 0 Jul 24 11:10 some13
-rw-r--r-- 1 maxims eng 0 Jul 24 11:10 some5
-rw-r--r-- 1 maxims eng 0 Jul 24 11:10 somefile
-rw-r--r-- 1 maxims eng 0 Jul 24 11:10 something

expansion_test/loc1:
total 0
-rw-r--r-- 1 maxims eng 0 Jul 24 11:09 testfile1
-rw-r--r-- 1 maxims eng 0 Jul 24 11:09 testfile2
-rw-r--r-- 1 maxims eng 0 Jul 24 11:09 testfile3
-rw-r--r-- 1 maxims eng 0 Jul 24 11:09 testfile4

expansion_test/loc2:
total 0
-rw-r--r-- 1 maxims eng 0 Jul 24 11:09 testfile10
-rw-r--r-- 1 maxims eng 0 Jul 24 11:09 testfile5
-rw-r--r-- 1 maxims eng 0 Jul 24 11:09 testfile6
-rw-r--r-- 1 maxims eng 0 Jul 24 11:09 testfile7
-rw-r--r-- 1 maxims eng 0 Jul 24 11:09 testfile8

我做错了什么?

1 个答案:

答案 0 :(得分:4)

您的扩展工作的原因是大括号扩展不会以双引号扩展。另外,要使用大括号扩展并将其一次性设置为变量,您需要将其包装在括号中。

试试这个:

$ path_var=("expansion_test/"{loc,diff-loc}*)
$ echo $path_var
expansion_test/diff-loc expansion_test/loc1 expansion_test/loc2