Как получить код состояния программы, переданной в диалоговую команду linux

Я пытаюсь использовать линукс dialog подготовить простой установщик для Ubuntu. Фактическая команда:

  dpkg -i package.deb 2>&1 | dialog --programbox "Installing..." 10 100

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

Проблема в том, что мне нужен код состояния dpkg Команда после окончания обеих команд. Просто чтобы знать, если dpkg сделал свою работу или нет. К сожалению, после окончания этих команд я могу получить только код состояния dialog команда...

Кто-нибудь знает, как получить код состояния dpkg команда из приведенного выше примера?

1 ответ

Решение

То, что вы ищете, это pipestatus:

dpkg -i ... | dialog ...
echo ${PIPESTATUS[0]} # this contains the exit code of the dpkg command.

Посмотрите на этот пример:

$ false | true | false | true
$ echo ${PIPESTATUS[@]}
1 0 1 0
Другие вопросы по тегам