Fer*_*ndo 1 bash shell for-loop list wildcard
我想使用列表作为for循环的参数;但是带双引号的列表不会被理解为列表,没有双引号的通配符将被评估为文件名。
A="a* b*"
for ex in "$A"; do
echo "$ex";
done
for ex in $A; do
echo "$ex";
done
Run Code Online (Sandbox Code Playgroud)
第一个打印:
a* b*
Run Code Online (Sandbox Code Playgroud)
后者打印:
a.txt
b.txt
Run Code Online (Sandbox Code Playgroud)
我想要:
a*
b*
Run Code Online (Sandbox Code Playgroud)
我该如何进行这项工作?
您可以set -f禁用路径名扩展:
A="a* b*"
( set -f
for ex in $A ; do
echo "$ex"
done
)
Run Code Online (Sandbox Code Playgroud)