Как sh -e взаимодействует с &?

Я использую sh ( dash ) на Ubuntu (lucid), и manpage имеет это, чтобы сказать о -e :

            -e errexit Если это не интерактивно, немедленно выйдите, если какая-либо непроверенная команда завершится с ошибкой.
                             Статус выхода команды считается явно протестированным
                             если команда используется для управления if, elif, while или until;  или
                             если команда является левым операндом операции «&&» или «||»
                             тор.

Что происходит, если команда фона не работает? И делает ли bash другому в этом отношении?

  • перенаправление вывода работы фонового задания в bash
  • +/- после выполнения задания в фоновом режиме
  • Как не создать файл nohup.out, но сохранить вывод терминала?
  • Почему SIGINT не работает в фоновом режиме в скрипте?
  • Запустите фоновый процесс из сценария и управляйте им, когда скрипт заканчивается
  • Linux останавливает фоновый процесс с помощью kill + PID
  • Запуск нескольких программ в фоновом режиме и проверка их возвращаемого значения
  • Предотвратить жизнь от раковины дольше, чем ее инициатор?
  • One Solution collect form web for “Как sh -e взаимодействует с &?”

    Это довольно просто проверить. С -e :

     % bash -e -c 'false & echo waiting; if wait $!; then echo success; else echo failure; fi' waiting failure 

    Поэтому, если фоновая команда не работает, оболочка не будет автоматически выходить ( -e недостаточно).

    Если вы wait за пределы явного теста, wait вернет код возврата неудавшегося фонового процесса. В этом случае, если задано -e , оболочка выйдет:

     % bash -e -c 'false & echo waiting; wait $!; echo returned' waiting 

    Те же результаты с bash или sh или zsh .

    Interesting Posts
    Linux и Unix - лучшая ОС в мире.