2011-09-19 33 views
5

我想將用戶消息存儲在bash程序中,然後在用戶下次運行腳本時顯示消息。BASH:如何詢問用戶輸入並將其存儲在將來?

我認爲這可能工作的一種方式是,如果我將消息導出到環境變量,但我無法讓它工作。

這裏是我到目前爲止,但它不工作:

echo "Last message was: $KEEPTHISMESSAGE" 
echo "Type the new message that you want to enter, followed by [ENTER]:" 
read KEEPTHISMESSAGE 
export KEEPTHISMESSAGE 

我在做什麼錯?如果有更好的方法來做到這一點,請讓我知道。也許保留一個文件,保存這些消息的歷史,並獲得最新的?

回答

7

你不能這樣使用EXPORT。它只輸出到在該腳本調用中啓動的進程。您必須將消息存儲在文件系統的文件中,並在用戶下次執行腳本時加載它。很簡單:

echo "Last message was: $(cat message.txt)" 
echo "Type the new message that you want to enter, followed by [ENTER]:" 
read KEEPTHISMESSAGE 
echo $KEEPTHISMESSAGE > message.txt 

你必須制定出了什麼情況的第一次(當它不存在message.txt),並與到message.txt相對/絕對路徑的問題,如果你正在運行的腳本一個不同的目錄。

+3

+1這可以修改爲使用隱藏文件(以。開頭)。調用它〜/ .yourprog.history通過獲取它在bash腳本中讀取此文件,並在腳本結束時覆蓋內容。 –

+1

echo $ KEEPTHISMESSAGE> message.txt **覆蓋或創建message.txt **;使用>>追加 – Paul

+1

@Paul,但追加是不可取的在他的問題,如果他這樣做,他應該使用'尾巴-1'而不是'cat' –

2

腳本只能將變量直接導出到其子進程。他們不能導出到父進程。

您可以通過調用這樣你的腳本改變家長環境:

$ . /path/to/your_script.sh 

這裏你的腳本應該有一個導出語句導出的變量,並不能有退出聲明。

相關問題