上記のパイプラインが出力を生成するかどうかをテストする標準/標準方法は何ですか?

上記のパイプラインが出力を生成するかどうかをテストする標準/標準方法は何ですか?

私が考える状況は、次のような構造を持っています。

% some_command | [PRODUCED OUTPUT] || echo 'no output' >&2

これは、出力が生成された場合にのみ値が「成功」でなければならない、指定されていない[PRODUCED OUTPUT]テストコマンドを表します。truesome_command

もちろん、ランダムにsome_command複雑なパイプラインを表し、同様に出力を生成せずに実行されるランダムな操作をecho 'no output' >&2表します。some_command

上記のタスクを実行する標準テストはありますか[PRODUCED OUTPUT]grep -qm1 '.'閉じますが、空行で構成された入力に関するエラーも報告します。

同じではないパイプが空であることを確認し、空の場合は、データに対してコマンドを実行します。入力が存在する場合は削除したいので維持する必要はありません。

答え1

試してみてはいかがでしょうかread

$ cat /dev/null | read pointless || echo no output
no output
$ echo something | read pointless || echo no output
$ printf "\n" | read pointless || echo no output
$ printf " \n" | read pointless || echo no output
$ false | read pointless || echo no output
no output

~によるとグループ定義を開く:

終了ステータス

次の終了値を返す必要があります。

0

正常に完了しました。

>0

ファイルの終わりが検出されたか、エラーが発生しました。

答え2

私にとってうまくいきます| read -n 1

$ echo 'faw' | read -n 1 || echo 'no output'
$ echo | read -n 1 || echo 'no output'
$ printf '' | read -n 1 || echo 'no output'
no output
$ false | read -n 1 || echo 'no output'
no output
$

関連情報