我想使用列表作爲for循環的參數;但與雙引號,該列表不被理解爲列表,並且沒有引號,通配符被評估爲文件名。在Bash循環中避免通配符擴展
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*
我怎樣才能使這項工作?
我想使用列表作爲for循環的參數;但與雙引號,該列表不被理解爲列表,並且沒有引號,通配符被評估爲文件名。在Bash循環中避免通配符擴展
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*
我怎樣才能使這項工作?
您可以set -f
禁用路徑擴展:
A="a* b*"
(set -f
for ex in $A ; do
echo "$ex"
done
)
使用數組:
A=("a*" "b*")
for ex in "${A[@]}"; do
echo "$ex"
done
錯字:'for x'應該是'ex' –
errr ...我想我變成盲人......就是兩個循環之間的區別? – thkala
thkala,同意。據推測,他們中的一個不應該擁有帶有dbl引號的$ A。祝你們好運。 – shellter