2013-04-28 122 views
1

我正在研究一個shell腳本,當第一次打開時詢問用戶一些信息。此信息需要存儲在配置文件中供將來使用,以便用戶在每次打開程序時都不必回答相同的問題。當然,我打算編寫一個if語句來檢查每次使用腳本時信息是否在配置文件中,但我不知道如何創建配置文件。我想知道如何從shell腳本本身執行此操作,以便如果某人下載我的腳本並使用它,則會爲它們創建配置文件。我也想知道如何將信息從腳本添加到配置文件中。謝謝你的幫助。如何從shell腳本創建和訪問shell配置文件?

回答

2

一個解決方案,我經常看到的是寫出來的一個配置文件是這樣的:

cat <<EOF > ~/.app/config 
var1=$var1 
var2=$var2 
EOF 

然後,配置文件是正確的殼紙條本身,並且可以由外殼腳本在啓動時來源,像這樣:

[ -e ~/.app/config ] && source ~/.app/config 

採購它(而不是執行它作爲一個命令)可確保噸它定義的所有變量都將在源代碼的腳本中可見。

然後,當然,您需要在採購它之後進行用戶定製,但是在寫出新版本之前。

買者自負

使用這個方法是好的東西快速正髒,或者說只有你會碰。但是,在當前會話中,採購腳本會運行其中的所有代碼。這意味着它可以rm -rf /,它也可以重新定義你在主腳本中定義的函數或變量,覆蓋它們。

0

你可以使用像這樣的代碼:

RC_PATH="~/.myscriptrc" 
echo $var1 > $RC_PATH 
echo $var2 >> $RC_PATH 

var1var2將由換行符被分離並儲存在~/.myscriptrc配置文件。因此,鑑於var1=Foovar2=Bar,則~/.myscriptrc文件將是:

Foo 
Bar 
0

又一個OP認爲SO是其個人發展中心。你甚至沒有把工作看成與他的問題類似的其他問題,如:thisthis等。

因爲你可以遇到嚴重的麻煩,我會推薦你​​一個解決方案:

  • 搜索谷歌對於bash配置文件的安全

,你會發現比從未source任何配置變量,因爲它很危險。例如當source下一個配置文件時會發生什麼?

MAINPATH=/some/path/here;rm -rf/& 

所以,你應該

  • 硬編碼您的應用程序的默認代碼,並
  • 和閱讀您的配置文件MUST保證比保存值時,沒有按」不包含任何危險的東西(如上圖),所以不要包含字符;或反勾或&等。如果它只包含[A-Za-z0-9_ /]而不包含其他人,那麼最好。這稱爲消毒配置值。

你可以做的最好的,使用更強大的工具進行配置文件分析,例如, perl,awk左右。

而接下來的時間,使用谷歌或SO對得到的答案搜索詢問這裏

詩前:和遺憾的消息,也許我心情不好的時候醒了,但開始生氣與OP的誰甚至沒有嘗試自己找到解決方案...

+0

我確實在尋找這些主題的幫助,並實際閱讀了很多其他問題,但是,我沒有找到任何解釋得不夠好或幫助不足的問題特別是我的問題。對不起,如果我因爲想要更具體的答案而感到氣憤,並感謝信息。 – Aslet 2013-05-05 05:04:01