コマンドの解析中にコマンドの出力をどのように表示できますか?

コマンドの解析中にコマンドの出力をどのように表示できますか?

現在は2つのコマンドがあり、build手動で実行し、出力を直接目で分析し、出力で見つかった値を引数として使用します。プロセスは次のとおりです。deploybuilddeploy

$ build
==> amazon-ebs: amazon-ebs output will be in this color.
... hundreds of lines of output ...
==> Builds finished. The artifacts of successful builds are:
--> amazon-ebs: AMIs were created:
us-east-1: ami-19601070

$ deploy ami-19601070
... some more output ...

build実際には包装機、精通した人のために)

これら2つのステップを1つのスクリプトにまとめたいと思います。おおよその概要には以下が含まれます。

  • 走るbuild
  • 0終了ステータスが次のようになり、出力に「AMIs was Created」という文字列が含まれていることを確認し、それ以外の場合は中止します。
  • ami-19601070出力()からAMI番号を抽出する
  • 走るdeploy ami-19601070

可能であれば、シェルスクリプトを使用してすべてを一緒に接続するための最良の方法を見つけようとしていますが、理想的には、すべてのstdout / stderrメッセージを端末にストリーミングしながら、2つの別々のパターンの出力をgrepする方法に閉じ込められています。コマンドが実行されます。私はこれをシェルスクリプトで行うという考えを捨て、代わりにそれを実行するために小さなPythonスクリプトを書く必要があるかどうか疑問に思います。

ベストアンサー1

仕事のようです。tee:

build | tee /some/file
ami_name=$(do_something_to /some/file)
deploy "$ami_name"

おすすめ記事