脚本:第一个进程结束时运行第二个进程

脚本:第一个进程结束时运行第二个进程

我正在尝试制作一个由两部分组成的脚本。第一个是运行初始状态,第二个是平衡系统。问题是第二个进程依赖于第一个进程,因此我需要在运行第二个进程之前结束第一个进程。我怎样才能做到这一点?

我正在运行的代码如下:

#!bin/sh

echo -n  "Imput Chemical Potential:"
read chem
awk < towhee_input -v n="-$chem" 'NR==12 {$0=n}{print}'> towhee_input1
echo -n  "Imput nstep initial:"
read nstepi
r=5
declare -i p
pi=$nstepi/$r
awk < towhee_input1 -v k="$nstepi" 'NR==18 {$0=k}{print}'> towhee_input2
awk < towhee_input2 -v t="$pi" 'NR==22 {$0=t}{print}'> towhee_input3
awk < towhee_input3 -v t="$pi" 'NR==24 {$0=t}{print}'> towhee_input4
awk < towhee_input4 'NR==82 {$0=".true."}{print}'> towhee_input5

##### (i wont that process finish first and then continue the script)
towhee towhee_input5 > output &  
##### (i wont that process finish first and then continue the script)

cp towhee_final towhee_initial
echo "Run again?"
read wwwww

u=5
declare -i nstep
nstep=$nstepi*$u
declare -i p
p=$pi*$u
awk < towhee_input5 -v k="$nstep" 'NR==18 {$0=k}{print}'> towhee_input6
awk < towhee_input6 -v t="$p" 'NR==22 {$0=t}{print}'> towhee_input7
awk < towhee_input7 -v t="$p" 'NR==24 {$0=t}{print}'> towhee_input8
awk < towhee_input8 'NR==82 {$0=".false."}{print}'> towhee_input9
towhee towhee_input9 > towhee.prod &

我怎样才能做到这一点?

答案1

只需删除&最后的

towhee towhee_input5 > output &

在 shell 中&意味着放入后台执行,如果您希望进程在前台运行,则只需将其删除,脚本一旦结束就会执行。

编辑

如果您想在后台运行该命令并等待它,那么只需使用wait

towhee towhee_input5 > output &
wait
continue your code...

它应该足够了,尽管此代码会等待您之前在后台启动的每个命令,您也可以使用它,wait $!因为$!是一个包含最近后台命令的 PID 的变量,并且waitbash 内置命令通常与 PID 作为参数一起使用等待特定的进程。

相关内容