bashスクリプトで行をパイプし、プログラムに渡す前にパイプにデータがあるかどうかを確認したいと思います。
私が見つけた検索ですが、test -t 0
ここでは機能しません。常にfalseを返します。では、パイプにデータがあることを確認する方法は?
例:
echo "string" | [ -t 0 ] && echo "empty" || echo "fill"
出力: fill
echo "string" | tail -n+2 | [ -t 0 ] && echo "empty" || echo "fill"
出力: fill
前述のパイプラインが出力を生成したかどうかをテストする標準/標準的な方法とは異なりますか?入力をプログラムに渡すために保存する必要があります。これは、あるプロセスから別のプロセスに出力をパイプする方法を一般化しますが、最初のプロセスに出力がある場合にのみ実行しますか?電子メールの送信に焦点を当てています。