我想使用列表作为for循环的参数;但是 with 双引号,列表不被理解为列表,而没有引号,通配符被评估为文件名。
A="a* b*"
for ex in "$A"; do
echo "$ex";
done
for ex in $A; do
echo "$ex";
done
第一个打印:
a* b*
后者打印:
a.txt
b.txt
我想:
a*
b*
我该如何做到这一点?
答案 0 :(得分:4)
您可以set -f
禁用路径名扩展:
A="a* b*"
( set -f
for ex in $A ; do
echo "$ex"
done
)
答案 1 :(得分:4)
使用数组:
A=("a*" "b*")
for ex in "${A[@]}"; do
echo "$ex"
done