簡體   English   中英

編寫腳本以輸出修改后的javascript

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM