我正在研究一個shell腳本,當第一次打開時詢問用戶一些信息。此信息需要存儲在配置文件中供將來使用,以便用戶在每次打開程序時都不必回答相同的問題。當然,我打算編寫一個if語句來檢查每次使用腳本時信息是否在配置文件中,但我不知道如何創建配置文件。我想知道如何從shell腳本本身執行此操作,以便如果某人下載我的腳本並使用它,則會爲它們創建配置文件。我也想知道如何將信息從腳本添加到配置文件中。謝謝你的幫助。如何從shell腳本創建和訪問shell配置文件?
1
A
回答
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
var1
和var2
將由換行符被分離並儲存在~/.myscriptrc
配置文件。因此,鑑於var1=Foo
和var2=Bar
,則~/.myscriptrc
文件將是:
Foo
Bar
0
又一個OP認爲SO是其個人發展中心。你甚至沒有把工作看成與他的問題類似的其他問題,如:this或this等。
因爲你可以遇到嚴重的麻煩,我會推薦你一個解決方案:
- 搜索谷歌對於bash配置文件的安全
,你會發現比從未source
任何配置變量,因爲它很危險。例如當source
下一個配置文件時會發生什麼?
MAINPATH=/some/path/here;rm -rf/&
所以,你應該
- 硬編碼您的應用程序的默認代碼,並
- 和閱讀您的配置文件MUST保證比保存值時,沒有按」不包含任何危險的東西(如上圖),所以不要包含字符
;
或反勾或&
等。如果它只包含[A-Za-z0-9_ /]而不包含其他人,那麼最好。這稱爲消毒配置值。
你可以做的最好的,使用更強大的工具進行配置文件分析,例如, perl,awk左右。
而接下來的時間,使用谷歌或SO對得到的答案搜索詢問這裏
詩前:和遺憾的消息,也許我心情不好的時候醒了,但開始生氣與OP的誰甚至沒有嘗試自己找到解決方案...
相關問題
- 1. 爲shell腳本創建配置文件
- 2. 從shell腳本讀取配置文件
- 3. 如何從Shell腳本的配置文件中檢索值
- 4. 多次訪問shell腳本
- 5. 如何爲日誌創建shell腳本
- 6. shell腳本創建目錄
- 7. 如何從現有腳本創建shell腳本?
- 8. shell腳本文件夾結構中循環和EXCUTE shell腳本
- 9. 創建Shell腳本數據庫 - 從PHP
- 10. shell腳本從asciidoc創建pdf
- 11. 如果shell腳本文件
- 12. sqlplus的訪問和使用電子郵件訪問shell腳本
- 13. 創建和刪除每個shell腳本
- 14. Shell或Perl腳本,從文本文件
- 15. 在shell腳本中創建和保存文本文件時遇到問題
- 16. 如何從shell腳本設置別名?
- 17. 如何從shell腳本
- 18. 如何從shell腳本
- 19. 設置由shell腳本創建的文件的目錄?
- 20. 如何爲刪除文件創建一個shell腳本
- 21. 如何創建文件驗證shell腳本?
- 22. Ansible:如何獲取由shell腳本新創建的文件?
- 23. 如何在Ubuntu中爲shell腳本創建可執行文件?
- 24. 如何在shell腳本中創建文件
- 25. 如何使用shell腳本創建zip文件?
- 26. 如何根據shell腳本中的行創建CSV文件?
- 27. 從shell腳本
- 28. 無法在Ant構建配置環境JAVA_HOME設置爲shell腳本訪問
- 29. KSH Shell腳本匹配文件模式
- 30. 通過shell腳本從mysql創建虛擬主機文件
我確實在尋找這些主題的幫助,並實際閱讀了很多其他問題,但是,我沒有找到任何解釋得不夠好或幫助不足的問題特別是我的問題。對不起,如果我因爲想要更具體的答案而感到氣憤,並感謝信息。 – Aslet 2013-05-05 05:04:01