diff
может даже полностью подавить вывод, за исключением сообщений «Files / bin / bash и / bin / sh другому», используя код ниже.
file1="./helloworld$x.out"
file2="./output/helloworld$x.out"
if diff -q "$file1" "$file2"; then
echo "Passed $x"
else
echo "Failed $x"
fi
Если вы даже хотите скрыть это сообщение, вам нужно добавить > /dev/null
после команды diff, чтобы скрыть вывод diff
:
if diff -q "$file1" "$file2" >/dev/null; then
/dev/null
это специальный файл, который действует как черная дыра, если вы напишите в него, он исчезнет, если вы читаете из него, вы ничего не получите обратно.
Обратите внимание, что bash не нужно ;
заканчивать строки.
Что касается исходного вопроса, чтобы сохранить вывод программы в переменной:
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
Альтернативные способы проверить, является ли переменная пустой:
[ "$output" = "" ]
[ "$output" == "" ]
[[ "$output" == "" ]]
[[ $output == "" ]]
Если вы используете Bash, последние две команды рекомендуются для сравнения строк. В противном случае первое и [ -n "$output" ]
рекомендуется.
... > /dev/null
делает в этом контексте. Вывод diff будет идти в / dev / null, но разве это ничего?