小编cag*_*gri的帖子

如何防止bash中for循环中的文件名扩展

在这样的 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(包括反斜杠)。[我想这是一个不同的问题]

bash shell for-loop wildcard expansion

4
推荐指数
1
解决办法
1251
查看次数

标签 统计

bash ×1

expansion ×1

for-loop ×1

shell ×1

wildcard ×1