• ベストアンサー

シェルスクリプトで出力と処理の同時実行

シェルスクリプトで出力コマンドを実行し、キーワードで 抽出してその行数で分岐させようと考えています。 (出力コマンドはミドルウェアのコマンドでアプリケーションの 状態を表示するコマンドです) 出力コマンドの結果を出力させたいのですが下記のような 流れで行おうとしています。 いちいちファイルに保存せずに出力と、行数の変数への格納を 一度でできる方法はないでしょうか。 出力コマンド | grep [キーワード] | tee tmp/file hensuu=wc -l tmp/file case $hensuu in ・・・ よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • trapezium
  • ベストアンサー率62% (276/442)
回答No.2

ぱっと思いつくものとしては、 aaa=`command | awk '/regex/{i++; print $1 |"cat 1>&2"} END{print i}'` /dev/fdが使えれば、 bbb=`command | grep regex | tee /dev/fd/2 | wc -l` perlが使えるなら、 ccc=`command | perl -e 'while (<STDIN>) { if (/regex/) { $i++; print STDERR $_; }} print $i;'` でもtemporary fileにtrap仕掛けておけばその方が安全かもしれない。

syun8079
質問者

お礼

ご回答ありがとうございます。 スクリプトを始めて1週間の私にはレベルが高いので 一つ一つ調べていきたいと思います。 ありがとうございました。

その他の回答 (1)

  • zionic
  • ベストアンサー率39% (31/79)
回答No.1

「hensuu=出力コマンド | grep [キーワード] | wc -l」ではダメでしたか?

syun8079
質問者

お礼

ご回答ありがとうございます。 変数に格納と同時に画面上に抽出結果を表示させたいのですが 教えていただいた方法では画面には出力されませんでした。 変数への格納と画面出力は同時にはできないのでしょうか。

関連するQ&A