变量中的通配符,Shell bash,怎么办?变量= $变量2 *

时间:2013-03-14 22:49:16

标签: bash shell variables wildcard

对我而言,它起作用了:

diretorio=$(echo 'test 123'*)

但是当我在引号中使用变量

时却没有用
Var2="test 123" 
diretorio=$(echo '$Var2'*)

如何解决?

3 个答案:

答案 0 :(得分:6)

glob中的错误是

diretorio=$(echo '$Var2'*)

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

所以:

diretorio=$(echo "$Var2"*)

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

答案 1 :(得分:3)

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

diretorio=("${Var2}"*)
doSomethingWithAllFiles "${diretorio[@]}"
for umDiretorio in "${diretorio[@]}"; do
    doSomethingWithASingleFile "$umDiretorio"
done

答案 2 :(得分:1)

使用双引号:

diretorio=$(echo "$Var2"*)

单一的阻止变量替换