0

我在 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 

我相信它不喜欢 "<(" 部分。所以,我的问题是......我怎样才能更改这个脚本以便 BusyBox 喜欢它?

4

1 回答 1

2

“<()”称为进程替换,是 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
于 2012-07-18T17:58:54.147 回答