我有javascript文件使用的IP地址在移动时会发生变化。我想我可以编写一个脚本来解析我的许多javascript文件,并将%IP_ADDRESS%
之类的令牌字符串替换为从ifconfig
获取的结果。生成的文件缓冲区将保存为我的站点的可用脚本。
有没有更简单的方法来实现这一目标?如果没有,什么bash命令可以帮助我扫描文件,替换令牌,并保存到新文件?
由于
答案 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)
我把它放在一起作为一个非常快速的演示。
以下是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中运行良好。