我需要一种方法,在使用 shell 脚本在嵌入式系统上更新脚本期间将变量从一个配置文件迁移到下一个/较新的文件。
我有一个配置文件,其结构可供 CGI 脚本和 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,如果这有什么区别的话。 (嵌入式系统)
最佳答案
感谢您使用 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
关于linux - 用于迁移配置文件变量的 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24294217/