Как мне вернуть true / false в зависимости от того, получаю ли я stderr или stdout?

#linux #bash #boolean #stdout #stderr

#linux #bash #логическое #стандартный вывод #stderr

Вопрос:

Я создаю скрипт bash, который удалит инструменты взлома / ненужные пакеты на компьютере Linux. Я хочу, чтобы он включал в черный список пакеты и циклически проверял, установлены ли они dpkg -s [INSERT PACKAGE NAME HERE] , и возвращал true, если команда возвращает stdout, и возвращал false, если команда возвращает stderr, а затем отправлял все, для чего было установлено значение true, в массив, который мы можем перебирать для удаления. Я могу сделать это, отправив все выходные данные пакетов в файл, а затем выполнив поиск в нем сообщения об ошибке, но я просто хочу иметь метод, который был бы немного более элегантным. Заранее спасибо за помощь!

Комментарии:

1. Есть ли причина, по которой вы вообще их изучаете, вместо того, чтобы просто переходить по статусу выхода, как в if dpkg -s "yourpackage" > /dev/null 2>amp;1; then echo "It's installed"; fi

2. @thatotherguy Я не совсем понимаю, что вы говорите, не могли бы вы объяснить, как это работает? Я довольно новичок в bash.

3. Все команды возвращают код выхода, указывающий, завершились они неудачно или успешно, и это легко проверить в скрипте. Как правило, только люди смотрят на stderr, в то время как скрипты игнорируют его и используют код выхода.

4. @thatotherguy Спасибо!