【发布时间】:2011-07-03 23:06:24
【问题描述】:
在这样的for循环中,
for i in `cat *.input`; do
echo "$i"
done
如果输入文件之一包含像*a 这样的条目,它会,并给出
以“a”结尾的文件名。
有没有一种简单的方法可以防止这种文件名扩展?
由于使用多个文件,通配符 (set -o noglob) 不是
不错的选择。我还应该能够将cat 的输出过滤为
转义特殊字符,但是
for i in `cat *.input | sed 's/*/\\*'`
...
仍然会导致 *a 扩展,而
for i in `cat *.input | sed 's/*/\\\\*'`
...
给我\*a(包括反斜杠)。 [我想这是一个不同的
问题虽然]
【问题讨论】:
-
您想对输入文件中的每一行或每个单词做些什么吗?因为如果输入文件之一包含例如foo bar.txt 然后 for 循环将执行一次迭代,将 i 设置为 foo,并进行一次迭代,将 i 设置为 bar.txt
标签: bash shell for-loop wildcard expansion