Shell

後台程序並使用一個命令執行某些操作

  • November 6, 2014

可能只使用腳本會更容易,但我想知道為什麼我不能用一個命令來做到這一點。到目前為止我已經嘗試過:

$ (ls >/dev/null &) && echo $!
3135
$ (ls >/dev/null &) ; echo $! #bad idea, but if that worked, I could just add `sleep 0.1`
3135
$ ls >/dev/null & ; echo $!
bash: syntax error near unexpected token `;'
$ `ls >/dev/null &` && echo $!
3135
$ `ls >/dev/null &` ; echo $!
3135

3135數字是保存變數的最後一個後台程序的 PID $!,並且它保持不變*(我也在使用 Konsole 並且為了成功後台程序,它會列印類似的內容[1] PID)*。唉,執行的命令都沒有將程序發送到後台。

這應該做你想要的:

$ ls > /dev/null & echo $!

因為您以各種方式將後台命令強製到子程序中,所以第一個 shell 沒有任何後台程序,因此$!沒有更新。

現在後台程序由同一個 shell 啟動,echo $!現在它可以執行您想要的操作。

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