“<的差异<(cat file)`和`

时间:2015-02-18 02:57:54

标签: bash file while-loop pipe cat

我看到以下示例用于在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)

1 个答案:

答案 0 :(得分:1)

它是useless use of cat。可以将其与单个文件一起使用的唯一合理理由是易读性(例如cat file | while ...),但在这种情况下,它只会变得更复杂。