Bash
非阻塞 bash 命令
假設我有一個包含以下內容的 bash 腳本:
#!/bin/sh gedit rm *.temp
當我使用 , 執行它時
sh ./test.sh
,會gedit
彈出但該rm
部分直到我關閉後才執行gedit
。我希望腳本即使
gedit
沒有關閉也能繼續執行;就像gedit
沒有阻止 bash 執行一樣。我給出的例子只是一個例子(把第一個放在
rm
實際情況下是行不通的)。
您正在尋找的術語稱為“背景”工作。當您在 shell 或腳本中執行命令時,您可以在末尾添加一個標誌以將其發送到後台並繼續執行新命令或腳本的其餘部分。在包括 在內的大多數 shell
sh
中,這是&
字元。#!/bin/sh gedit & rm ./*.temp
這樣,shell 就不會等待 and 的終止,而是
gedit
會rm
同時gedit
執行。術語“阻塞”通常與輸入/輸出流有關,通常與文件或設備有關。它也以類似於您使用的含義的方式用於編譯語言,但在 bash 和類似的 shell 腳本中,術語(和函式!)是相當不同的。