我在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会喜欢它?
答案 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