2012-05-13 31 views
3

我在bash提示符項目,該項目目錄作用於不同的國家工作,你是目前英寸加載不可信配置

我現在需要的是從當前目錄下,加載一個小型的配置方式,也可以用. .params.conf輕鬆完成,但這種方法極不安全,因爲任何對您所在目錄具有寫入權限的人都可以創建和執行命令,就像您偶然發現帶有.params.conf文件的目錄一樣。

從這樣的文件加載變量的最佳方式是什麼? 變量將主要處於真/假狀態,所以我不以任何方式解析它們,因此它可以被執行。

可能的解決方案:

  • 一個循環,每一個加載預定義變量是可能的,但我想保持代碼可讀的方式。

  • 把整個文件放在一個bash數組中將是最好的解決方案,但是如何在bash中像這樣填充一個鍵/值字典?

  • 如果Bash可以源中的文件只加載變量..

我不知道params.conf文件的格式是如何將看起來像呢。但我認爲最簡單的是每個參數的一行,用空格分隔。像每行上的一個:key value that can have space in it

回答

3

eval可以是very insecure並且仍然可以執行惡意代碼。最好用declare

while read varname value 
do 
    declare "$varname=$value" 
done < .params.conf 
0

如果你的價值觀不包含引號,這是相當容易:

while read varname value ; do 
    eval $varname="'$value'" 
done < .params.conf 

如果有變量的引號內,你要多加小心,並添加一些逃逸。