diff
Die Ausgabe kann sogar vollständig unterdrückt werden, mit Ausnahme der Meldung "Dateien / bin / bash und / bin / sh unterscheiden", die den folgenden Code verwendet.
file1="./helloworld$x.out"
file2="./output/helloworld$x.out"
if diff -q "$file1" "$file2"; then
echo "Passed $x"
else
echo "Failed $x"
fi
Wenn Sie diese Nachricht sogar ausblenden möchten, müssen Sie > /dev/null
nach dem Befehl diff Folgendes anfügen , um die Ausgabe von diff
:
if diff -q "$file1" "$file2" >/dev/null; then
/dev/null
ist eine spezielle Datei, die als Schwarzes Loch fungiert. Wenn Sie darauf schreiben, ist sie verschwunden. Wenn Sie davon lesen, erhalten Sie nichts zurück.
Beachten Sie, dass bash keine ;
Zeilenenden benötigt.
Wie für die ursprüngliche Frage, um die Ausgabe eines Programms in einer Variablen zu speichern:
file1="./helloworld$x.out"
file2="./output/helloworld$x.out"
output="$(diff -q "$file1" "$file2")"
# the quotes are mandatory, this checks whether $output is empty or not
if [ -n "$output" ]; then
echo "Passed $x"
else
echo "Failed $x"
fi
Alternative Möglichkeiten, um zu überprüfen, ob eine Variable leer ist:
[ "$output" = "" ]
[ "$output" == "" ]
[[ "$output" == "" ]]
[[ $output == "" ]]
Wenn Sie Bash verwenden, werden die letzten beiden Befehle für den Zeichenfolgenvergleich empfohlen. Ansonsten ist das erste und [ -n "$output" ]
empfohlen.
... > /dev/null
in diesem Zusammenhang tut. Die Ausgabe von diff wird nach / dev / null gehen, aber ist das nicht nichts?