2016-01-25 109 views
-1

我正在尋找屬性文件,如. PATH_TO_PROPERTYFILE。如果在讀取值之後更改一個值,我如何更新原始文件以反映修改後的值?我試過$SOURCED_ARRY_NAME = ("${TEMP_ARRAY[@]}")但這沒有幫助。另外我想要更新回屬性文件中。這基本上是從屬性文件訪問數組並對其進行修改。如何從shell腳本更新屬性文件中的數組?

文件名格式:abc.properties

services_deployed=() 

xyzapps_deployed=() 
+1

,如果'TEMP_ARRAY'是:


因此,如果你知道它可以在配置文件中設置的變量名的完整列表,您可以爲所有的人都這樣做你正在設置自己,請注意,全大寫變量名是爲系統使用而保留的,所以將它們重用於自己的變量是不好的做法;請參閱spec @ http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html的第四段,指出shell變量和環境變量共享一個名稱空間。 (「包含小寫字母的環境變量名稱的名稱空間是爲應用程序保留的,應用程序可以使用此名稱空間中的名稱定義任何環境變量,而不修改標準實用程序的行爲。」) –

+0

您是否具有完整的變量列表應該在該文件中設置?或者,他們都有一個共同的前綴? –

+0

他們沒有共同的前綴,但我確實有要更新的變量列表! – vthallam

回答

1

您可以生成代碼,將變量與declare -p它的當前值。

這樣:

declare -p SOURCED_ARRAY_NAME >>"PROPERTYFILE" 

...將追加代碼設置SOURCED_ARRAY_NAME其新的價值名爲PROPERTYFILE文件的末尾。 BTW

vars=(SOURCED_ARRAY_NAME othervar1 othervar2 othervar3) 
write_config() { 
    local varname 
    for varname in "${vars[@]}"; do 
    [[ ${!varname+set} ]] && declare -p "$varname" 
    done 
} 

write_config >"propertyfile" 
+0

我想這是爲我做的工作!如果我理解正確,我形成數組並將這些數組追加到屬性文件而不是讀取它並更新它。我的理解是否正確? – vthallam

+0

我實際上傾向於建議完全重寫文件 - 從一開始 - 如果你能擺脫它。追加會導致出現多次設置值的問題(只有最後一個計數),並且文件的長度不斷增長。 –

+0

聽起來不錯!感謝你及時的答覆 :) – vthallam

相關問題