编写脚本以输出修改后的javascript

时间:2016-02-09 21:02:42

标签: javascript bash scripting

我有javascript文件使用的IP地址在移动时会发生变化。我想我可以编写一个脚本来解析我的许多javascript文件,并将%IP_ADDRESS%之类的令牌字符串替换为从ifconfig获取的结果。生成的文件缓冲区将保存为我的站点的可用脚本。

有没有更简单的方法来实现这一目标?如果没有,什么bash命令可以帮助我扫描文件,替换令牌,并保存到新文件?

由于

4 个答案:

答案 0 :(得分:1)

使用sed。如果您将IP地址输入变量$ip,则可以执行以下操作:

sed "s/%IP_ADDRESS%/$ip/g" template.js > script.js

答案 1 :(得分:0)

  

什么bash命令可以帮助我扫描文件,替换令牌,并保存到新文件?

您可以使用sed使用bash命令替换每个文件中的令牌:

sed -i 's/%IP_ADDRESS%/127.0.0.1/g' *.js

这将在当前目录中的所有-i文件上就地替换(.js标志)。

如果要创建新文件而不是修改旧文件,可以使用以下命令:

sed 's/%IP_ADDRESS%/127.0.0.1/g' input.js > output.js

在这种情况下,您需要为每个文件重复该命令。

一个很好的替代方案可能是更改Javascript代码,以便根据需要加载IP地址,而不是包含硬编码。

答案 2 :(得分:0)

我把它放在一起作为一个非常快速的演示。

Click here to view result

以下是HTML页面的代码。您可以从上面查看结果。

<!DOCTYPE html>
<html>
<script type="text/javascript" src="http://dpoisn.com/demos/vars.js"></script>
<head>
<title>DPoisn.com - demo Page</title>
</head
<body>

    <div id="demo">blank for now</div>

    <script type="text/JavaScript" language="JavaScript">
        messageIs = "ipIs: " + ipIs + "<br />hostIs: " + hostIs;
        document.getElementById("demo").innerHTML =  messageIs

    </script>

<p>source for vars.js:</p>

<pre><code>
var ipIs = '198.168.1.1'
var hostIs = 'http://dpoisn.com'
</code></pre>

</body>
</html>

这一切都是拉入.js文件,该文件包含您需要的变量。只要导入在页面上的其他内容之前完成,您就可以使用其中的任何内容。在这种情况下,设置几个字符串。

这个想法是你可以拥有一个“vars.js”,它对你运行它的每个服务器都是唯一的。并且您可以使用变量而无需再次在整个站点中更改代码。

答案 3 :(得分:0)

将此bash脚本放在与所有js文件相同的目录中。

#!/bin/bash
#Remark: $ip should contain your IP address, adjust cut and awk according to your OS.
ip=$(ifconfig eth1 | grep -i bcast | cut -d : -f2 | awk '{ print $1 }')
sed -i "s|%IP_ADDRESS%|$ip|g" *.js

脚本在Redhat 6中运行良好。