Script: executando um segundo processo quando os primeiros terminam

0

Estou tentando criar um script que consiste em duas partes. a primeira é executar um estado inicial e a segunda é equilibrar o sistema. O problema é que o segundo é dependente do primeiro, então eu preciso que o primeiro processo seja finalizado antes de eu executar o segundo. Como posso fazer isso?

o código que estou executando é o seguinte:

#!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 &

como posso conseguir isso?

    
por Joao Macau 02.04.2014 / 12:51

1 resposta

1

apenas remova o & no final de

towhee towhee_input5 > output &

No shell & significa colocar em execução em segundo plano, se você quiser que o processo seja executado em primeiro plano, basta removê-lo e seu script será executado assim que terminar.

editar

Se você deseja executar o comando em segundo plano e esperar por ele, basta usar wait

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

deve ser suficiente, embora esse código espere por cada comando que você iniciar em segundo plano antes, você também pode usar wait $! porque $! é uma variável que contém PID do comando de segundo plano mais recente e wait bash O comando interno é geralmente usado com um PID como argumento para aguardar um processo específico.

    
por 02.04.2014 / 12:57