对我来说它有效:
diretorio=$(echo 'test 123'*)
但是当我在引号中使用变量时不起作用
Var2="test 123"
diretorio=$(echo '$Var2'*)
如何解决?
你的glob中的错误是
diretorio=$(echo '$Var2'*)
是一个镜头/dev/null
,因为shell不会在单引号中扩展变量。
所以 :
diretorio=$(echo "$Var2"*)
了解 ' 和 " 和 ` 之间的区别。参见http://mywiki.wooledge.org/Quotes和http://wiki.bash-hackers.org/syntax/words
我可以建议另一种方法吗?不要制作以空格分隔的文件名列表(如果任何文件名包含空格,例如“test 123”,这将导致可怕的混乱),而是使用数组:
diretorio=("${Var2}"*)
doSomethingWithAllFiles "${diretorio[@]}"
for umDiretorio in "${diretorio[@]}"; do
doSomethingWithASingleFile "$umDiretorio"
done
使用双引号:
diretorio=$(echo "$Var2"*)
单个防止变量替换