模板渲染,如何用python或者shell实现?
本帖最后由 zl624867243 于 2018-11-22 00:31 编辑执行python 或者shell脚本,传一个json 数据:
例如:
python a.py '{"name":"abc","app_path":"/usr/local"}'
or
bash a.sh '{"name":"abc","app_path":"/usr/local"}'
源文件a.conf如下:
program={{ name }}
directory={{ app_path }}想要的结果result.conf:
program=abc
directory=/usr/local
json 数据可能一长串,我不想一个去赋值,所以希望是遍历的方式 回复 2# 本友会机友会摄友会
这个方案 需要一个个赋值去搞 不科学。人家传给我的json数据可能是一长串 python 不是有json库么? 回复 1# zl624867243
cat a.conf
program={{ name }}
directory={{ app_path }}
cat a.sh
#!/bin/bash
echo "$1" > b.conf
awk -F"[={} ]+" 'FILENAME==ARGV{b=split($0,a,",");for(i=1;i<=b;i++){match(a,"\042([^\"]+)\042:\042([^\"]+)",c);d]=c}}d[$2]{print $1"="d[$2]>"result.conf"}' b.conf a.conf
./a.sh '{"name":"abc","app_path":"/usr/local"}'
cat result.conf
program=abc
directory=/usr/local # cat render.sh
#!/bin/bash
echo "$1" > b.conf
awk -F"[={} ]+" 'FILENAME==ARGV{b=split($0,a,",");for(i=1;i<=b;i++){match(a,"\042([^\"]+)\042:\042([^\"]+)",c);d]=c}}d[$2]{print $1"="d[$2]>"result.conf"}' b.conf a.conf
# cat b.conf
{"name":"abc","app_path":"/usr/local","sex":"man"}
# cat result.conf
program=abc
directory=/usr/local
# bash render.sh '{"name":"abc","app_path":"/usr/local","sex":"man"}'
# cat result.conf
program=abc
directory=/usr/local
#
回复 5# wh7211
三个参数怎么就不行了呢
回复 6# zl624867243
因为你忘记了在a.conf中定义第3个参数,你的逻辑需要事先在a.conf中定义待传参数
cat a.conf
program={{ name }}
directory={{ app_path }}
person={{ sex }}
./a.sh '{"name":"abc","app_path":"/usr/local","sex":"man"}'
cat result.conf
program=abc
directory=/usr/local
person=man 回复 7# wh7211
是我抄得有问题吗
# cat a.conf
program={{ name }}
directory={{ app_path }}
sex={{ man }}
# cat result.conf
program=abc
directory=/usr/local
# bash render.sh '{"name":"abc","app_path":"/usr/local","sex":"man"}'
# cat result.conf
program=abc
directory=/usr/local
# cat render.sh
#!/bin/bash
echo "$1" > b.conf
awk -F"[={} ]+" 'FILENAME==ARGV{b=split($0,a,",");for(i=1;i<=b;i++){match(a,"\042([^\"]+)\042:\042([^\"]+)",c);d]=c}}d[$2]{print $1"="d[$2]>"result.conf"}' b.conf a.conf
# cat a.conf
program={{ name }}
directory={{ app_path }}
sex={{ man }}
汗网络不好 提交了两次
本帖最后由 wh7211 于 2018-11-22 16:54 编辑
回复 8# zl624867243
# cat a.conf
program={{ name }}
directory={{ app_path }}
sex={{ man }}
待传参数{"name":"abc","app_path":"/usr/local","sex":"man"}中,name,app_path和sex都应该放在a.conf中的“{{}}”里面,你把sex放错位置了
页:
[1]
2