首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过shell脚本编辑js文件

问通过shell脚本编辑js文件
EN

Stack Overflow用户
提问于 2015-10-22 12:15:05
回答 2查看 2.6K关注 0票数 1

我需要更改js文件的内容config.js该文件包含的值如下:

代码语言:javascript
复制
dev:'https://api-beta.com'
content_bucket_name: 'content-beta'

我想使用shell脚本更改此内容并保存该文件。更改后的内容可能如下所示:

代码语言:javascript
复制
dev:'https://api-production.com'
content_bucket_name: 'live-bucket'

如何通过shell脚本执行此操作?

config.js

代码语言:javascript
复制
 unifiedTest.constant('CONFIG', {
    env : 'dev',
    api : {
        dev : 'https://api-beta.com', 
    },
    content_bucket_name :"content-beta",
});

我尝试过的shell脚本

代码语言:javascript
复制
#!/bin/bash
file=config.js
content_bucket_name=$1
dev=$2

sed -i -e "s/\(content_bucket_name=\).*/\1$1/" \
-e "s/\(dev=\).*/\1$3/" 
EN

回答 2

Stack Overflow用户

发布于 2015-10-22 12:47:05

您遇到的问题与这样一个事实有关,即一个字符串中包含/,因此您得到了s/\(dev=\).*/\1https://api-production.com/,它有太多的/分隔符。您有许多选择,但这里是最有意义的两个:

  1. 使用awk (插入换行符以提高可读性):

awk -v name="$1“-v url="$3”‘/content_bucket_name[:space:]* :.* / { /*将出现的一个:.*替换为:"{name}“。*/ sub(/ :.* /,":\"“名称"\"") }/dev[:空格:]*:.*/{ /*将出现的一个:.*替换为:"{url}”。*/ sub(/:.*/,":\"“URL "\"") }‘

  • 为表达式使用不同的分隔符,例如| (希望url中没有该分隔符;:、/、'?’、';‘、&和#通常是替代URL的糟糕选择):

"s|(dev[:space:]*).*|\1'$3'|" -i \ -e“s|(content_bucket_name[:空格:]*).*|\1‘$1’|”\ -e空格

请注意,我更改了替换表达式以使用:而不是=,因为这是实现JSON的替换所必需的。

票数 1
EN

Stack Overflow用户

发布于 2020-02-28 14:18:44

代码语言:javascript
复制
sed -i 's#dev : .*#dev : '"'https://api-production.com'",'#' config.js
sed -i 's#content_bucket_name:.*#content_bucket_name:''"live-bucket"','#' config.js
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33273323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档