在这样的 for 循环中,
for i in `cat *.input`; do
echo "$i"
done
Run Code Online (Sandbox Code Playgroud)
如果其中一个输入文件包含类似 的条目*a,它将给出以“a”结尾的文件名。
有没有一种简单的方法可以防止这种文件名扩展?
由于使用多个文件,通配符 ( set -o noglob) 不是一个好的选择。我也应该能够过滤输出cat以转义特殊字符,但是
for i in `cat *.input | sed 's/*/\\*'`
...
Run Code Online (Sandbox Code Playgroud)
仍然会导致*a扩张,而
for i in `cat *.input | sed 's/*/\\\\*'`
...
Run Code Online (Sandbox Code Playgroud)
给我\*a(包括反斜杠)。[我想这是一个不同的问题]
当我循环浏览所有文件时,foo我会这样做
for f in foo* ; do echo "result = $f" ; done
Run Code Online (Sandbox Code Playgroud)
问题是当我没有文件开始时foo:
result = foo*
Run Code Online (Sandbox Code Playgroud)
意味着循环执行一次,即使没有文件开始foo.
这怎么可能?如何循环遍历所有文件(如果没有文件则不循环)?