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シェルで機能するには、一時ファイルとパイプラインを使用する必要があります。

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 に答える