2014-12-02 77 views
2

有沒有辦法將env變量設置爲一定的秒數,然後重置。我有一個腳本來讀取env變量。如果它被設置,腳本應該退出。基本上我試圖建立一個貪睡算法。例如。它會在收到消息時繼續發送消息。然而,有時我需要將它們延遲t秒,在這段t秒內,它會緩衝所有傳入的消息,並在計時器t到期時發送緩衝區內容。我的做法是使用在bash中設置env變量t秒

if [ $MY_ENV=set ] 
    then 
    buffer 
fi 

但是這個環境變量不能是殼具體。應該爲每個用戶從同一臺機器上的不同位置登錄。

回答

1

無論時序如何,都無法在該流程之外的已運行流程的環境中設置變量。

您需要爲此使用文件系統。例如,如果它是用戶特定的,則它可以是用戶主目錄中的文件。

+0

是的,你的方法更簡單更容易,我打算寫一個腳本,設置(說標誌)變量= 1的內容,t秒,然後我的主腳本應該讀取文件的內容(varialbe設置或未設置)。 – user1977867 2014-12-03 05:00:32

1

如果它不應該是特定於shell的,我會爲此使用某種鎖定文件。如果鎖定文件存在,那就相當於你正在設置的var。你可以有一些東西計劃在t秒後刪除它。

看看lockfile命令。