Bash

非阻塞 bash 命令

  • February 6, 2022

假設我有一個包含以下內容的 bash 腳本:

#!/bin/sh
gedit
rm *.temp

當我使用 , 執行它時sh ./test.sh,會gedit彈出但該rm部分直到我關閉後才執行gedit

我希望腳本即使gedit沒有關閉也能繼續執行;就像gedit沒有阻止 bash 執行一樣。

我給出的例子只是一個例子(把第一個放在rm實際情況下是行不通的)。

您正在尋找的術語稱為“背景”工作。當您在 shell 或腳本中執行命令時,您可以在末尾添加一個標誌以將其發送到後台並繼續執行新命令或腳本的其餘部分。在包括 在內的大多數 shellsh中,這是&字元。

#!/bin/sh
gedit &
rm ./*.temp

這樣,shell 就不會等待 and 的終止,而是geditrm同時gedit執行。

術語“阻塞”通常與輸入/輸出流有關,通常與文件或設備有關。它也以類似於您使用的含義的方式用於編譯語言,但在 bash 和類似的 shell 腳本中,術語(和函式!)是相當不同的。

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