式 ('if' ステートメント) の出力をファイルにリダイレクトしたいと考えています。たとえば、'./primitives' の出力を、'if' ステートメントの式が './primitive' であるファイルにリダイレクトしたい場合、次のようになります。
if ./primitives 1>> output.txt ; then
echo "primitives OK. " | tee -a output.txt
fi
上記は機能しないため、次から始めます。
if ./primitives ; then
echo "primitives OK. "
fi
「./primitives」の出力をファイルに取得し、「./primitives」が正しく実行された場合に文字列「primitives OK.」のみをエコーするにはどうすればよいですか?
おまけとして、正しく実行された場合、ファイル「output.txt」に追加された「./primitives」の STDOUT のみをリダイレクトし、「primitives OK.」をコンソールとファイルへの追加の両方に出力するにはどうすればよいでしょうか。しかし、「./primitives」が正しく実行されなかった場合、「output.txt」には何も出力せず、STDERR をコンソールに出力するだけですか?
それとも、この問題全体を間違った方法で見ていますか?
ありがとう
編集:
現在のスクリプトと出力は次のとおりです。
脚本:
#!/bin/bash
if ./compile.sh; then
echo "Compile OK. " | tee output.txt
if ./primitives 1>> output.txt ; then
echo "primitives OK. " | tee -a output.txt
fi
if ./composites 1>> output.txt ; then
echo "composites OK. " | tee -a output.txt
fi
fi
現在のコンソール出力:
Compile OK.
望ましいコンソール出力:
Compile OK.
primitives OK.
composites OK.