BusyBox - 语法错误:意外重定向

时间:2012-07-18 17:52:32

标签: busybox openwrt ash

我在OpenWRT上(使用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 

我相信它不喜欢“&lt;(”部分。所以,我的问题是......我如何更改此脚本以便BusyBox会喜欢它?

1 个答案:

答案 0 :(得分:2)

“&lt;()”称为进程替换,是特定于bash的功能。您需要使用临时文件和管道才能在其他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