Рейтинг:0

Как проверить успешность выполнения последних k команд

флаг cn

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

$ man # команда 1 со статусом выхода 1
Какую справочную страницу вы хотите?

$рез1=$? # команда 2 со статусом выхода 0
# здесь также хранится код выхода из предыдущего кода, т.е. 1

$ res2=$? # сохранение кода выхода предыдущей команды, т.е. 0

# Теперь я хочу проверить, все ли предыдущие команды работали нормально с их кодами выхода
$ эхо $ res1 && $ res
1
0: команда не найдена

Что не так с моим текущим подходом. Или что делать правильно? Есть ли лучший способ обобщить его для последних k команд.
Заранее спасибо.

guiverc avatar
флаг cn
Вы `echo $res`, но затем просите `$res` выполниться как команда? таким образом, «команда не найдена» действительна, поскольку я также не знаю о команде 0. `&&`, как вы указали, прерывает команды и выполняет следующие ТОЛЬКО ЕСЛИ первая часть выполнена успешно; таким образом, была предпринята попытка выполнения `$res`; но 0 недействителен... поэтому ошибка
Рейтинг:0
флаг in

У меня тоже были проблемы с этим

id решить мою проблему таким образом

во-первых, я написал функцию, которая проверяет статус команды, которую я запускаю в своем скрипте


функция show_process_status() {
    если [$? == 0]; тогда 
        эхо $1
    еще
        эхо $2
        сломать
    фи
}

затем в моем сценарии я вызываю эту функцию после любой команды, которую я запускаю, например:

функция update_system(){
    echo "начать обновление системы"
    sudo apt-получить обновление -y
    show_process_startus "репозитории успешно обновлены" "Произошла ошибка при обновлении репозиториев"
    если [[ $1 == "полный" ]]; тогда
        sudo apt-get dist-upgrade -y
        show_process_startus "система обновлена ​​успешно" "Произошла ошибка при обновлении систем"
    Элиф [[ $1 == "исправить" ]]; тогда 
        sudo apt-get update --fix-missing
        show_process_startus "обновление исправления отсутствует успешно" "Произошла ошибка при отсутствии исправления"
        sudo apt-получить обновление
    фи
}

в show_process_status функция я получаю два аргумента, первый печатается, когда код запускается и завершается успешно, а второй используется, когда выход команды не удался.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.