bik*_*ben 2 bash shell if-statement background-process
我之前使用过该&命令使脚本在后台运行另一个脚本,如下所示:
#!/bin/bash
echo "Hello World"
script1.sh &
script2.sh &
echo "Please wait..."
Run Code Online (Sandbox Code Playgroud)
但是让我说我有另一个带有IF ELSE语句的脚本,我想设置一个ELIF语句mid flow作为后台任务,&然后继续处理剩下的脚本,因为知道ELIF的其余部分将进行运行在后台:
#!/bin/bash
if cond1; then
stuff
sleep 10 &
stuff
stuff
elif cond2; then
something else
else
echo "foo"
fi
stuff
echo "Hello World"
Run Code Online (Sandbox Code Playgroud)
我真的希望这是有道理的任何帮助将不胜感激.
您可以在子shell中运行命令.子shell将在单独的(子)进程中执行.您可以通过用括号括起来定义子shell中运行的命令.
而且,如您所知,要在后台运行一个进程,只需附加一个&.
if如果您要在单独的后台进程中执行它,那么您的语句将如下所示:
#!/bin/bash
( if cond1; then
stuff
sleep 10 &
stuff
stuff
elif cond2; then
something else
else
echo "foo"
fi
stuff
echo "Hello World" ) &
Run Code Online (Sandbox Code Playgroud)