Shell
後台程序並使用一個命令執行某些操作
可能只使用腳本會更容易,但我想知道為什麼我不能用一個命令來做到這一點。到目前為止我已經嘗試過:
$ (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 $!
現在它可以執行您想要的操作。