[英]Write a script to output modified javascript
我有使用IP地址的javascript文件,該IP地址在移動時會更改。 我以為我可以編寫一個腳本來解析我的許多javascript文件,並用從ifconfig
獲取的結果替換%IP_ADDRESS%
類的令牌字符串。 結果文件緩沖區被保存為我的站點的可用腳本。
有沒有更簡單的方法來實現這一目標? 如果沒有,什么bash命令可以幫助我掃描文件,替換令牌並保存到新文件?
謝謝
使用sed
。 如果將IP地址放入變量$ip
,則可以執行以下操作:
sed "s/%IP_ADDRESS%/$ip/g" template.js > script.js
哪些bash命令可以幫助我掃描文件,替換令牌並保存到新文件?
您可以通過bash命令使用sed
替換每個文件中的令牌:
sed -i 's/%IP_ADDRESS%/127.0.0.1/g' *.js
這將對當前目錄中的所有.js
文件進行就地替換( -i
標志)。
如果要創建一個新文件而不是修改舊文件,可以使用以下命令:
sed 's/%IP_ADDRESS%/127.0.0.1/g' input.js > output.js
在這種情況下,您需要為每個文件重復該命令。
一個不錯的選擇是更改Javascript代碼,使其根據需要加載IP地址,而不是對其進行硬編碼。
我將其作為一個非常快速的演示進行了整合。
這是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”,這對於在其上運行的每個服務器都是唯一的。 而且您可以使用變量,而不必再次在整個站點上更改代碼。
將此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中工作正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.