POSIXシェルで任意のコマンドが出力を生成したかどうかを効率的にチェックする方法は? (としましょうgit ls-files --killed
。)
明白な方法が 3 つありますが、どれも私には醜いまたは悪いように思えます。
- [ -n "$(git ls-files --killed)" ] - コマンドの完全な出力をメモリにキャプチャし、テストに渡す必要があります(少なくともビルトインであることが望ましい)
- [ "$(git ls-files --killed | wc -c)" -gt 0 ] - 2 つの fork-exec が関与
- TMP=$(一時ファイル); git ls-files --killed >"$tempfile"; [ -s "$tempfile" ] && ...; rm "$tempfile" - 中間一時ファイル (ここでもすべての出力をキャプチャします) が必要です