Скрипты Bash знают результат команды - PullRequest
2 голосов
/ 29 мая 2010

Я пишу bash-скрипт для запуска интеграционного теста инструмента, который пишу.

Обычно я запускаю приложение с набором входных данных и сравниваю результаты с ожидаемыми значениями с помощью инструмента командной строки diff.

Это работает, но я бы хотел улучшить его, узнав результат команды diff и напечатав "SUCCESS" или "FAIL" в зависимости от результата diff.

Как я могу это сделать?

Ответы [ 3 ]

6 голосов
/ 29 мая 2010
if diff file1 file2; then
    echo Success
else
    echo Fail
fi

Если оба файла равны, diff возвращает 0, что является кодом возврата для if, следующего за then. Если file1 и file2 различаются, diff возвращает 1, что означает переход к части else конструкции.

Возможно, вы захотите подавить вывод diff, написав diff file1 file2 >/dev/null вместо вышеуказанного.

5 голосов
/ 29 мая 2010

Переменная $? содержит результат последней выполненной команды.

2 голосов
/ 29 мая 2010

Также в Bash вы можете diff выводить команды напрямую, используя подстановку процесса:

if diff <(some_command arg1) <(some_command arg1) > /dev/null 2>&1
then
    echo "They're the same."
else
    echo "They're different."
fi
...