我看到以下示例用于在bash脚本中读取文件:
while read IP; do
${IPTABLES} -I INPUT -s "${IP}" -j DROP
done < <(cat "${BLACKLIST}")
但我想过要做以下事情:
while read IP; do
${IPTABLES} -I INPUT -s "${IP}" -j DROP
done <${BLACKLIST}
为什么会使用< <(cat
而不是简单<
?最合适的方法是什么?
对this question的第二条评论很好地说明了为什么使用cat
很糟糕但RoseHosting.com看起来很有信誉,他们建议上面的代码使用cat
。我认为< <(cat file)
看起来像是一种掩盖不良做法的奇怪方式。 (here's another place it was pointed out cat
piping to a loop is bad)
答案 0 :(得分:1)
它是useless use of cat。可以将其与单个文件一起使用的唯一合理理由是易读性(例如cat file | while ...
),但在这种情况下,它只会变得更复杂。