Bash
獲取在後台執行的最後兩個命令的 pid 並執行操作
我寫了這個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