Bash

獲取在後台執行的最後兩個命令的 pid 並執行操作

  • May 25, 2014

我寫了這個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

使用 bash 腳本的邏輯:pid1 和 pid2 的值是否正確?

這個腳本執行正確嗎?

我認為您不需要 `eval “(…) &” 語法。只需這樣做:

cmd1 &
pid1=$!

cmd2 &
pid2=$!

但除此之外,你的方法對我來說看起來不錯。

例子

$ more ex.bash 
#!/bin/bash

sleep 10 &
pid1=$!

sleep 10 &
pid2=$!

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

現在當我執行它時:

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

我們可以確認這是正確的:

$ pgrep -l sleep
27866 sleep
27867 sleep

引用自:https://unix.stackexchange.com/questions/131896