1.源文件main.yaml内容
repository: Mysql
tag: V1.0.0
port: 3306
2.目标文件value.yaml内容
image:
repository: {repository}
tag: {tag}
port: {port}
3.替换脚本update.sh
#AUTHOR:anqixiang
#DATE:2020-04-11
#MODIFY:
#FUNCTION:读取key: value格式的源文件,并将目标文件中{key}的值替换为value
set -e
current_dir=$(cd `dirname $0`;pwd) #脚本所在目录
#for循环默认以空格、制表符、换行符作为分隔符,导致把一行的内容分隔为两行,因此指定只以换行符为分隔符
IFS_OLD=$IFS #保存初始的值
IFS=$'\n' #以换行符作为分隔符
src_file=${current_dir}/main.yaml
dst_file=${current_dir}/value.yaml
[ ! -f ${dst_file}.bak ] && cp ${dst_file}{,.bak}
for i in $(cat ${src_file})
do
key=$(echo ${i%%: *})
value=$(echo ${i##*: })
#sed -ri "/\{$key\}/ s#^(.*)(: )(.*)#\1\2${value}#" ${dst_file}
sed -ri "/\{$key\}/ s#\{$key\}#${value}#" ${dst_file}
done
IFS=${IFS_OLD} #恢复初始值
set +e
4.执行脚本
bash update.sh
最终结果
cat value.yaml
image:
repository: Mysql
tag: V1.0.0
port: 3306