По существу у меня есть скрипт, который действует как оболочка задачи и отправляет электронное письмо пользователю, если задача не выполняется.Bash exec wrapper script - несколько команд, переданных в качестве аргументов
Задача передается в качестве аргумента скрипту. Проблема возникает, когда нам нужно запустить несколько команд, так как следующая строка передается скрипту, так как задача arg "echo this; echo that"
выводит ; эхо, что.
Итак, вопрос заключается в том, что является самым простым способом запуска нескольких команд без необходимости прокручивать входную командную строку и разбивать на ';' обугливается?
Простой пример:
FIRST=$1
TASK=$*
echo run
echo "emailing $FIRST"
$TASK
echo done
и запустить этот сценарий мы использовали бы ./wrapper.sh "[email protected]" "echo this; echo that"
предложения?
спасибо - есть в любом случае, чтобы получить возвращаемое значение, если любая команда в командной строке не удается. Скажем «эхо это: dsddsdsd; echo that», средняя команда не сработает (не найдена) еще $? будет по-прежнему 0, так как эхо будет успешным. Поэтому вопрос заключается в использовании sh. Я могу остановить сбой с помощью ключа -e, но могу ли я запускать каждую команду, чтобы возвращать любые ненулевые ошибки (Im догадывается, но не стоит делать снимок). – NightWolf
Хмм, я не могу придумать какой-либо простой механизм для этого; можете ли вы вместо этого изменить свой скрипт, чтобы принимать несколько команд в виде нескольких аргументов? например 'wrapper.sh alert @ hostname" echo this "" echo that "'? – sarnold