recebendo pid de dois últimos comandos executados em background e fazendo coisas

1

Eu escrevi este bash:

#!/bin/bash

    eval "(a command) &"
    pid1=$!

    eval "(while kill -0 $pid1; do .... ; done) &"  #It creates file.txt after few seconds
    pid2=$!

    if [ -s /tmp/file.txt ]; then
             for line in $(cat /tmp/file.txt)
                 do
                  sth
                 done

Com a lógica do bash scripting: Os valores de pid1 e pid2 estão corretos?

Este script está sendo executado corretamente?

    
por MLSC 25.05.2014 / 14:04

1 resposta

1

Eu não acho que você precise do 'eval' (...) & " sintaxe. Basta fazer isso em vez disso:

cmd1 &
pid1=$!

cmd2 &
pid2=$!

Mas, do contrário, sua abordagem parece boa para mim.

Exemplo

$ more ex.bash 
#!/bin/bash

sleep 10 &
pid1=$!

sleep 10 &
pid2=$!

echo "ID1: $pid1 --- ID2: $pid2"

Agora, quando eu executo:

$ ./ex.bash 
ID1: 27866 --- ID2: 27867

Podemos confirmar que isto está correto:

$ pgrep -l sleep
27866 sleep
27867 sleep
    
por 25.05.2014 / 14:50