При использовании команды brew install foo с уже установленным foo возвращается

Warning: foo-3.5.2 already installed

Это технически ошибка, как stderr, или это сообщение просто stdout? Это не указано в документации. Я спрашиваю, потому что у меня есть сценарий, который идет:

#!/bin/bash
brew install foo
if [ $? -eq 0 ]; then
    echo OK
else
    echo FAIL
fi

(Это простой скрипт, который поможет мне выучить условные выражения «если-то» - не судите!) Каждый раз, когда я запускаю его, скрипт возвращает OK вместе с приведенным выше Warning . Это предполагает, что предупреждение не является ошибкой / ошибкой, верно?

1 ответ1

1

Это похоже на предупреждение, выводимое приложением brew, но bash не знает об ошибке. Видит ли bash это как ошибку, зависит от того, отправляет ли приложение его в поток ошибок или выходной поток, и каков код выхода. Поскольку вы получаете OK, возвращенный из вашего скрипта, bash считает, что команда возвращает 0, что означает, что команда bash была успешно выполнена. Таким образом, brew должен отправлять предупреждения этого типа в stdout, а не в stderr.

Вы знаете, как использовать 2> для перенаправления stderr в файл? Вы можете перенаправить stderr (2) и stdout при запуске вашего скрипта в два разных файла. Затем вы можете увидеть, в какой поток выводится предупреждение.

./script.sh > stdout.txt 2> stderr.txt

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .