4

对我来说它有效:

diretorio=$(echo 'test 123'*)

但是当我在引号中使用变量时不起作用

Var2="test 123" 
diretorio=$(echo '$Var2'*)

如何解决?

4

3 回答 3

6

你的glob中的错误是

diretorio=$(echo '$Var2'*)

是一个镜头/dev/null,因为shell不会在单引号中扩展变量。

所以 :

diretorio=$(echo "$Var2"*)

了解 ' 和 " 和 ` 之间的区别。参见http://mywiki.wooledge.org/Quoteshttp://wiki.bash-hackers.org/syntax/words

于 2013-03-14T22:53:19.817 回答
4

我可以建议另一种方法吗?不要制作以空格分隔的文件名列表(如果任何文件名包含空格,例如“test 123”,这将导致可怕的混乱),而是使用数组:

diretorio=("${Var2}"*)
doSomethingWithAllFiles "${diretorio[@]}"
for umDiretorio in "${diretorio[@]}"; do
    doSomethingWithASingleFile "$umDiretorio"
done
于 2013-03-15T02:39:35.270 回答
1

使用双引号:

diretorio=$(echo "$Var2"*)

单个防止变量替换

于 2013-03-14T22:53:55.677 回答