私が考える状況は、次のような構造を持っています。
% some_command | [PRODUCED OUTPUT] || echo 'no output' >&2
これは、出力が生成された場合にのみ値が「成功」でなければならない、指定されていない[PRODUCED OUTPUT]
テストコマンドを表します。true
some_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
$