Это работает:
if diff "./helloworld$x.out" "./output/helloworld$x.out" >/dev/null; then echo "Passed $x"; else echo "Failed $x"; fiЕсли вы используете переменную вместо echo, вы можете удалить ветвь else: установите переменную в false до if и сохраните 2 строки Код.
Если вы хотите на самом деле поместить результат в переменную, используйте:
some_var="$(diff "./helloworld$x.out" "./output/helloworld$x.out")"
Включая мой тест, чтобы увидеть, действительно ли он работает:
rinzwind@discworld:~$ touch 1 rinzwind@discworld:~$ touch 2 rinzwind@discworld:~$ more test if diff 1 2 >/dev/null; then echo "Passed $x"; else echo "Failed $x"; fi rinzwind@discworld:~$ ./test Passed rinzwind@discworld:~$ vi 2 rinzwind@discworld:~$ more 2 2 rinzwind@discworld:~$ ./test FailedНа части >/dev/null: >/dev/null 2>&1 отправит вывод на >/dev/null, а 2>&1 отправит стандартные ошибки в один и тот же файл (&1 означает «использовать первый параметр») перед этой командой (так он также использует /dev/null).
sidenote: sdiff будет показывать бок о бок diff:
sdiff 1 2 1 1 2 2 3 3 4 4 5 5 7 7 > 8 9 9 10 10