Как написать сценарий оболочки, который запускает следующую команду, даже если текущая команда не выполняется? - PullRequest
1 голос
/ 14 декабря 2010

В настоящее время мне нужно автоматизировать задачу, в которой мне нужно выполнить 5 команд, даже если какая-либо команда не выполнена, все последующие команды должны быть выполнены, в настоящее время, если 4-я команда не выполняется, сценарий оболочки завершается и не запускает 5-ю команду.

Итак, что мне делать, чтобы скрипт оболочки запускал все последующие команды, даже если текущая команда терпит неудачу?

Ответы [ 4 ]

4 голосов
/ 14 декабря 2010

Предполагая, что у вас есть bash в качестве интерпретатора сценариев (или / bin / sh является символической ссылкой на bash), пожалуйста, проверьте, не содержит ли ваш скрипт

set -e

в любом месте кода.

4 голосов
/ 14 декабря 2010

Ну, что не так с кодом ниже?

#!/bin/bash
cmd1
cmd2
cmd3
cmd4
cmd5
3 голосов
/ 01 июня 2012

Я бы сделал

|| true

Пример:

( set -e; false ; echo not here; )
( set -e; false || true ; echo still here; )

Пример:

command1 || true
command2 || true
command3 || true
command4 || true
command5 || true

Таким образом, вы можете оставить флаг -e, это хороший флаг.

1 голос
/ 14 декабря 2010

Здесь может быть полезна команда "trap":

ловушка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...