用于迁移配置文件变量的Shell脚本

时间:2014-06-18 20:09:04

标签: linux bash shell sh

我需要一种方法,使用shell脚本在嵌入式系统上的更新脚本中将变量从一个配置文件迁移到下一个/更新的文件。

我有一个配置文件,由CGI-Scripts和C程序读取:

[Version]
api_version = 10

[Broadcast]
ip = 239.10.10.10
port = 35680

[Transmission]
uuid_long = YES

在更新过程中,我需要获取类似结构的新文件,并复制旧文件中的值。旧文件中存在的任何值都将存在于新文件中,但新文件中的所有字段都不会存在于旧文件中。

我的想法是遍历查找key = value\n模式的文件,并在新文件中执行替换,但我不确定如何执行grep将其删除我可以使用2个值,然后执行一个sed,它将与键和新行字符匹配,而不知道新文件中的值。

注意:我只有'sh'可以使用,没有bash,如果这有所不同。 (嵌入式系统)

1 个答案:

答案 0 :(得分:0)

感谢您使用AWK的建议。我在shell脚本方面非常弱,所以如果有可以改进的地方请提出建议。

#!/bin/sh
# Collect all the keys from the original config file
KEYS=$(awk '{ if ($1 !~ /\[[A-Za-z]*\]/ && $1 != "") print $1, "\n" }' /etc/file.conf)
# Loop through they keys replacing the values in the new config file
for KEY in $KEYS
do
        VALUE=$(awk -v key="$KEY" '{ if($1 ~ key) print $3 }' /etc/file.conf)
        sed -i "s/$KEY.*/$KEY = $VALUE/g" /etc/new.file.conf
done