Příkaz "wait" v bash

Petr Franta petr.franta na gmail.com
Pátek Říjen 28 11:34:29 CEST 2011


Ahoj všichni.
Chtěl jsem se zeptat na to jak udělat, aby v BASH scriptu zabral příkaz
"wait".
Pokud napíši:
#!/bin/bash
sleep 10 &
wait
Pak vše funguje správně.
Ale rád bych spouštěl paralelně zálohování FTP a můj bash ignoruje příkaz
"wait":
petr na petr-desktop:~/pracovni/bash$ cat wait2.sh
#!/bin/bash

cat ucty.txt | while read DOMENA USER PASS
do
  echo "Start sleep ${DOMENA}"
  { sleep 5; echo "Konec sleep ${DOMENA}!" ; } &
done

ps | grep sleep
wait
echo "BASH KONEC"
ps | grep sleep

Script vypíše:
petr na petr-desktop:~/pracovni/bash$ ./wait2.sh
Start sleep domena1.cz
Start sleep domena2.cz
Start sleep domana3.cz
 5575 pts/1    00:00:00 sleep
 5577 pts/1    00:00:00 sleep
 5579 pts/1    00:00:00 sleep
BASH KONEC
 5575 pts/1    00:00:00 sleep
 5577 pts/1    00:00:00 sleep
 5579 pts/1    00:00:00 sleep
petr na petr-desktop:~/pracovni/bash$
Konec sleep domana1.cz!
Konec sleep domana3.cz!
Konec sleep domana2.cz!

Pravděpodobně problém způsobí řádek cat ucty.txt | while read DOMENA USER
PASS, protože pokud jsem si udělal jen primitivní bash s příkazy while xxx ;
do ... sleep xx & ... done, tak to pracuje správně.
Předem díky za radu.
Petr


Další informace o konferenci Linux