shell模板变量替换

 

目录

我们经常使用一些模板语言来处理一些变量替换。比如jsp,php,velocity,freemarker,thymeleaf等。那对于shell来说,应该怎样替换变量呢。有一种很简单的办法可以做到。

先来看一个应用场景。在datax是阿里开源的一个异构数据源同步框架,其配置文档是json的,我想要用shell去调用执行pg到pg的数据同步,需要根据我的配置生成对应的配置文件。这如果用java来做就是维护一个对象,设置value,最后json-encode就好了。要是使用shell,这样也可以做到:

渲染脚本

#!/bin/bash  SRC_USER_NAME=etl SRC_USER_PWD=etl SRC_SQL="select * from tab" SRC_HOST_IP="192.168.1.1" SRC_HOST_PORT=3306 SRC_DB="abc_db" TAR_USER_NAME="etl2" TAR_USER_PWD="pass2" fields_map="\"a\",\"b\",\"c\"" TAR_HOST_IP="aaaadfsdfdsfjsdjf" TAR_HOST_PORT="5432" TAR_DB="tar_db" TAR_TABLENAME="tbname" eval "cat <<EOF $(< pg2pg.datax.json) EOF "  > result.json

模板文档
pg2pg.datax.json

{     "job": {         "setting": {             "speed": {                 "byte": 1048576             },             "errorLimit": {                 "record": 0,                 "percentage": 0.02             }         },         "content": [             {                 "reader": {                     "name": "postgresqlreader",                     "parameter": {                         
                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信