a)command1の出力は、でキャッチできます。
output=$(diff "helloworld$x.out" "output/helloworld$x.out")
またはバッククティックを使用しますが、ネストすることはできません。フォントによっては、アポストロフィと区別するのが難しい場合があります。
output=`cmd1`
b)ファイルに書き込んでからそのファイルを読み取る(または出力を取得してエコーする)代わりに、パイプを直接使用します。
cmd1 > file
cat file | cmd2
output=$(cmd1)
echo "${output}" | cmd2
=>
cmd1 | cmd2
しかし、あなたの例では、出力ではなくプログラムの結果に興味があります-それは機能しましたか?
diff "helloworld$x.out" "output/helloworld$x.out" && echo "success" || echo "failure"
&&および||の使用について読むには 「ショートカットANDおよびショートカットOR」を検索します。
出力をクリーンに保つために、「diff」の出力をどこにもリダイレクトできません。
diff "helloworld$x.out" "output/helloworld$x.out" >/dev/null && echo "success" || echo "failure"
成功を取得して後で評価するには、最後のコマンドの結果を$?を使用して変数に保存します。
diff "helloworld$x.out" "output/helloworld$x.out" >/dev/null
result=$?
# do something else
case $result in
0) echo success ;;
*) echo failure ;;
esac
... > /dev/null
が、この文脈で何が起こるのか理解できません。diffの出力は/ dev / nullになりますが、何もありませんか?