Shell Function: Compare Output of Two Commands
I just wrote this up for some test automation. This function gets passed two commands, runs both commands, and returns “PASS” if they match, or “FAIL” with the diff if they do not match.
compare_output() { out1=/tmp/output-$$.1 out2=/tmp/output-$$.2 $1 2>&1 > $out1 $2 2>&1 > $out2 diff -q >/dev/null $out1 $out2 if [ $? != 0 ]; then echo "FAIL" echo echo "Details:" diff $out1 $out2 echo else echo "PASS" fi rm $out1 $out2 } echo -n "Test that will fail: " compare_output 'echo pass' 'echo fail' echo -n "Text that will pass: " compare_output 'echo pass' 'echo pass'