a) Вывод команды 1 может быть задан с помощью
output=$(diff "helloworld$x.out" "output/helloworld$x.out")
или с обратными окнами, но это не рекомендуется, потому что вы не можете их вложить, и их может быть трудно отличить от апострофов, в зависимости от шрифта:
output=`cmd1`
b) Вместо того, чтобы записывать в файл, а затем читать этот файл (или захватывать вывод, а затем эхом его), вы должны использовать прямой канал:
cmd1 > file
cat file | cmd2
output=$(cmd1)
echo "${output}" | cmd2
=>
cmd1 | cmd2
, но в вашем примере вы не заинтересованы в выходе, но результат программы - это сработало?
diff "helloworld$x.out" "output/helloworld$x.out" && echo "success" || echo "failure"
Чтобы прочитать об использовании & amp; & amp; и || найдите «ярлык AND и ярлык OR».
Чтобы сохранить вывод чистым, вы можете перенаправить вывод «diff» в никуда:
diff "helloworld$x.out" "output/helloworld$x.out" >/dev/null && echo "success" || echo "failure"
Чтобы получить успех и оценить это позже, вы сохраняете результат последней команды в переменной с $ ?:
diff "helloworld$x.out" "output/helloworld$x.out" >/dev/null
result=$?
# do something else
case $result in
0) echo success ;;
*) echo failure ;;
esac