初学shell,取environment-variable-mac.ini文件中的变量和setting.ini中的模板,生文件

初学shell,我想读取environment-variable-mac.ini文件中的变量和setting.js中的模板,然后把变量和setting.ini文件都放到一个新生成的setting.js文件中去,这两个文件都在configuration目录下

environment-variable-mac.ini

UNIVER_USER_LOGIN='http://127.0.0.1/api/login'
UNIVER_SEARCH_ORDINARY='http://127.0.0.1/api/search/common'
UNIVER_SEARCH_LABEL='http://127.0.0.1/api/search/common'
UNIVER_SEARCH_VIDEO='http://127.0.0.1/api/search/common'
UNIVER_TASK_MANAGER='http://127.0.0.1/api/task/manager'
UNIVER_PROJECR_URL='67.110.220.11'
UNIVER_PROJECR_PORT=777778888

setting.ini


/**
 * environment
 * 全局配置文件,总体设置
 * 应用过程中不要进行修改
 */

var ENV = (function(){

    return {

        pythonAPI: {
            userLogin : '$UNIVER_USER_LOGIN',
            video: '', //
            searchOrdinary: '$UNIVER_USER_LOGIN, 
            searchLabel: '$UNIVER_USER_LOGIN',
            searchVideo : '$UNIVER_USER_LOGIN', 
            taskManager: 'UNIVER_TASK_MANAGER', 
            domainName: 'UNIVER_PROJECR_PORT', // 域名
            domainPort: $UNIVER_USER_LOGIN
        }

    }
})();

我希望我的setting.js文件中的内容是这样的


/**
 * environment
 * 全局配置文件,总体设置
 * 应用过程中不要进行修改
 */

var ENV = (function(){

    return {

        pythonAPI: {
            userLogin : 'http://127.0.0.1/api/login',
            video: '', //
            searchOrdinary: 'http://127.0.0.1/api/search/common', // 普通搜索接口
            searchLabel: 'http://127.0.0.1/api/search/common',
            searchVideo : 'http://127.0.0.1/api/search/common', // 周同标签搜索接口
            taskManager: 'http://127.0.0.1/api/task/manager', // 任务管理器接口
            domainName: '67.110.220.11', // 域名
            domainPort: 777778888// 端口号
        }

    }
})();

我的脚本是这样的


#!/bin/bash

awk -F '=' 'BEGIN {print "{"} {print "\t"$1":"$2","} END{print "}"}' environment-variable-mac.ini > setting.js


awk -F '=' 'BEGIN {print "{"} {print "\t"$1":"$2","} END{print "}"}' setting.ini > setting.js

但是无法生成我想要的文件

阅读 2.5k
1 个回答

声明,我平时也不怎么用shell,现学现用,不保证方法最优。
你给的setting.ini中几个变量前没有$导致不能替换

将下面文件保存为 process.sh, 赋予可执行权限,然后在setting.ini, environment-variable-mac.ini 同级目录执行。

#!/bin/sh
cp ./setting.ini ./setting.js
for line in $(cat environment-variable-mac.ini)
do
    name="$"$(echo $line | awk -F '=' '{print $1}')
    val=$(echo $line | awk -F '=' '{print $2}')
    val=$(echo $val | sed "s/'//g")

    sed -i ".bak" "s#$name#$val#g" ./setting.js
done
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进