複数回のコマンドを同じファイルにリダイレクト

以下のようなシェルスクリプトを書いた場合、同じファイルをコマンドの回数だけオープンすることになり 無駄が生じる。

#!/bin/sh

echo foo >> a.txt
echo bar >> a.txt
echo baz >> a.txt

shellcheckにかけると以下の違反が検出される。

Consider using { cmd1; cmd2; } >> file instead of individual redirects.

SC2129 – ShellCheck Wiki

複数回のコマンドをまとめて一回だけリダイレクトする

SC2129 – ShellCheck Wikiに従って{}で囲ってリダイレクトする。

#!/bin/sh

{
  echo foo
  echo bar
  echo baz
} >> a.txt

これで一度だけファイルをオープンすることになる。