diff
incluso puede suprimir la salida por completo, excepto el mensaje "Archivos / bin / bash y / bin / sh diferente" utilizando el código a continuación.
file1="./helloworld$x.out"
file2="./output/helloworld$x.out"
if diff -q "$file1" "$file2"; then
echo "Passed $x"
else
echo "Failed $x"
fi
Si incluso desea ocultar ese mensaje, debe agregar > /dev/null
después del comando diff para ocultar la salida de diff
:
if diff -q "$file1" "$file2" >/dev/null; then
/dev/null
es un archivo especial que actúa como un agujero negro, si lo escribe, desaparecerá, si está leyendo, no recibirá nada.
Tenga en cuenta que bash no necesita ;
terminar líneas.
En cuanto a la pregunta original, para guardar la salida de un programa en una variable:
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
Formas alternativas de verificar si una variable está vacía:
[ "$output" = "" ]
[ "$output" == "" ]
[[ "$output" == "" ]]
[[ $output == "" ]]
Si está utilizando Bash, se recomiendan los dos últimos comandos para la comparación de cadenas. De lo contrario, el primero y [ -n "$output" ]
se recomienda.
... > /dev/null
hace en este contexto. La salida de diff irá a goto / dev / null pero ¿no es eso nada?