これは大きなスクリプトの一部ですが、問題を次のように要約します。
cm_safe(){
git push | while read line; do
echo "cm safe push: $line"
done;
}
次のようにgit出力を前に追加したいと思います。
cmセキュリティプッシュ:すべてが最新の状態です。
しかし、私は次のような結果を得ます:
すべてが最新の状態です。
gitはttyに直接書きますか、それとも別のものですか?何が起こったのかわかりません。
ベストアンサー1
git push
stderrに書き込むので、パイプを介して転送するにはstdoutにリダイレクトする必要があります。
cm_safe(){
git push 2>&1 | while IFS= read -r line; do
echo "cm safe push: $line"
done
}
またはこれを行うこともできます:
git push |& while IFS= read -r line; do
私は読書をお勧めしますシェルの制御およびリダイレクト演算子は何ですか?より多くの情報を知りたいです。