Linux

Unix分隔多個命令,最後有’&’(在後台執行)

  • July 3, 2017

在 Unix 中分隔正常命令是將分號放在末尾,如下所示:

cd /path/to/file;./someExecutable;

但它似乎不適用於這樣的命令:

./myProgram1 > /dev/null &
./myProgram2 > /dev/null &
=>./myProgram1 > /dev/null &;./myProgram2 > /dev/null &;

有什麼方法可以區分這些命令嗎?

另外,如果我將粘貼複製到命令提示符,如果以下兩種情況是等效的?謝謝。

cd /path/to/file;./someExecutable;

cd /path/to/file;
./someExecutable;

那麼“;” 使 shell 等待命令完成,然後繼續執行下一個命令。

“&”會將任何程序直接發送到後台並繼續執行下一個命令 - 無論第一個命令是否已完成或仍在執行。

所以 ”&;” 不會像你期望的那樣工作。

但實際上我不確定你的期望。

在你的 shell 中試試這個:

sleep 2 && echo 1 & echo 2 & sleep 3 && echo 3

它將輸出:2 1 3

現在比較一下

sleep 2 ; echo 1 & echo 2 & sleep 3 ; echo 3

這將輸出 1 2 3

問候。

引用自:https://serverfault.com/questions/181401