BASH SHELL, ЕСЛИ В противном случае запустить команду в фоновом режиме - PullRequest
2 голосов
/ 15 ноября 2011

Ранее я использовал команду &, чтобы скрипт запускал другой скрипт в фоновом режиме, например:

#!/bin/bash
echo "Hello World"    
script1.sh &
script2.sh &
echo "Please wait..."

Но, допустим, у меня есть другой сценарий со статусом IF ELSE, и я хотел бы установить промежуточный поток оператора ELIF в качестве фоновой задачи с &, а затем продолжить обработку остальной части моего сценария, зная, что пока остальные Элиф будет нести бег на заднем плане:

#!/bin/bash
if cond1; then
   stuff
   sleep 10 &
   stuff
   stuff
elif cond2; then
   something else
else 
   echo "foo"
fi
stuff
echo "Hello World"

Я действительно надеюсь, что это имеет смысл, любая помощь будет принята с благодарностью.

1 Ответ

5 голосов
/ 15 ноября 2011

Вы можете запускать свои команды в subshell . Подоболочка будет выполняться в отдельном (дочернем) процессе. Вы можете определить, какие команды запускаются в подоболочке, заключив их в скобки.

И, как вы знаете, для запуска процесса в фоновом режиме просто добавьте &.


Вот как выглядел бы ваш оператор if, если бы вы выполняли его в отдельном фоновом процессе:

#!/bin/bash
( if cond1; then
    stuff
    sleep 10 &
    stuff
    stuff
 elif cond2; then
    something else
 else 
    echo "foo"
 fi
 stuff
 echo "Hello World" ) &
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...