如何从shell脚本更新属性文件中的数组?

时间:2016-01-25 22:29:37

标签: bash shell

我正在寻找像. PATH_TO_PROPERTYFILE这样的属性文件。如果在读取值后我更改了一个,如何更新原始文件以反映该修改后的值?

我试过$SOURCED_ARRY_NAME = ("${TEMP_ARRAY[@]}"),但这没有帮助。此外,我希望更改在属性文件中更新回来。这基本上是从属性文件访问数组并修改它。

文件名格式:abc.properties

services_deployed=()

xyzapps_deployed=()

1 个答案:

答案 0 :(得分:1)

您可以生成使用declare -p将变量设置为当前值的代码。

因此:

declare -p SOURCED_ARRAY_NAME >>"PROPERTYFILE"

...会将SOURCED_ARRAY_NAME设置为新值的代码附加到名为PROPERTYFILE的文件的末尾。

因此,如果您知道可以在配置文件中设置的变量名称的完整列表,则可以对所有这些名称执行此操作:

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"