標準出力を基準とする条件の場合

標準出力を基準とする条件の場合

条件付きで終わるいくつかのコマンドがパイプを介して接続されていますawk。以下の例

command1 | command 2 | awk '$1 > 800'

今では、時には数行を出力し、時には出力しません。一部の出力(1行以上)がある場合にのみtrueと証明される条件が必要です。これを機能させる方法はありますか?

良い、

if command1 | command 2 | awk '$1 > 800' (some output); then
do command3
else; (blank output)
Do nothing

ベストアンサー1

普段はただ使うコマンドの置き換えその後、テストに入れます。

if [ ! -z "$(command1 | command 2 | awk '$1 > 800')" ]; then command3; fi

説明する

  • あなたの質問に従ってコマンドが実行されます。command1 | command 2 | awk '$1 > 800'
  • 出力はtestに渡され、長さ0の文字列で[ ! -z "$(…)" ]ない場合はtrueと評価されます。!-z

したがって、コマンドパイプラインの出力がある場合、thenコマンドは実行されます。

おすすめ記事