2012-07-18 49 views
0

我在OpenWRT(使用BusyBox)。BusyBox - 語法錯誤:意外重定向

當我運行此腳本:

while read oldIP ; do 
    iptables -t nat -D PREROUTING --dst $oldIP -p tcp --dport 443 -j DNAT --to 192.168.2.1:443 
done < <(comm -23 <(sort /tmp/currentIPs) <(sort /tmp/newIPs)) 

我得到這個錯誤:

syntax error: unexpected redirection 

我認爲它不喜歡的 「<(」 一部分,所以,我的問題是。如何更改此腳本以便BusyBox喜歡它?

回答

2

「<()」被稱爲進程替換,並且是一個bash特有的功能。您需要使用臨時文件d一個管道可以在其他POSIX shell上工作。

sort /tmp/currentIPs > /tmp/currentIPs.sorted 
sort /tmp/newIPs > /tmp/newIPs.sorted 
comm -23 /tmp/currentIPs.sorted /tmp/newIPs.sorted | while read oldIP ; do 
    iptables -t nat -D PREROUTING --dst $oldIP -p tcp --dport 443 -j DNAT --to 192.168.2.1:443 
done 
rm /tmp/currentIPs.sorted /tmp/newIPs.sorted 
+0

非常好!快速,清晰,簡潔。謝謝你的幫助! – exvance 2012-07-18 18:09:15