我想将带有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
我做错了什么?
答案 0 :(得分:4)
您的扩展工作的原因是大括号扩展不会以双引号扩展。另外,要使用大括号扩展并将其一次性设置为变量,您需要将其包装在括号中。
试试这个:
$ path_var=("expansion_test/"{loc,diff-loc}*)
$ echo $path_var
expansion_test/diff-loc expansion_test/loc1 expansion_test/loc2