diff
può persino sopprimere completamente l'output tranne il messaggio "File / bin / bash e / bin / sh differ" usando il codice qui sotto.
file1="./helloworld$x.out"
file2="./output/helloworld$x.out"
if diff -q "$file1" "$file2"; then
echo "Passed $x"
else
echo "Failed $x"
fi
Se vuoi persino nascondere quel messaggio, devi aggiungere > /dev/null
dopo il comando diff per nascondere l'output di diff
:
if diff -q "$file1" "$file2" >/dev/null; then
/dev/null
è un file speciale che funge da buco nero, se ci scrivi, sparirà, se stai leggendo da esso, non otterrai nulla in cambio.
Nota che bash non ha bisogno ;
di terminare le linee.
Per quanto riguarda la domanda originale, per salvare l'output di un programma in una variabile:
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
Modi alternativi per verificare se una variabile è vuota:
[ "$output" = "" ]
[ "$output" == "" ]
[[ "$output" == "" ]]
[[ $output == "" ]]
Se stai usando Bash, gli ultimi due comandi sono consigliati per il confronto delle stringhe. Altrimenti, il primo ed [ -n "$output" ]
è raccomandato.
... > /dev/null
fa in questo contesto. L'output di diff andrà / dev / null ma non è niente?