Você poderia fazer:
#! /bin/sh -
while [ "$#" -ge 2 ]; do
proto=$1 port=$2
shift 2
iptables --append INPUT --protocol "$proto" --destination-port "$port" \
--match state --state NEW --jump ACCEPT || exit 1
done
com zsh
:
#! /bin/zsh -
for proto port do
iptables --append INPUT --protocol "$proto" --destination-port "$port" \
--match state --state NEW --jump ACCEPT || exit 1
done
Uma diferença é que, se houver um número ímpar de argumentos, haverá uma execução extra com $proto
contendo o último argumento e $port
sendo definido, mas vazio (como se tivéssemos usado [ "$#" -gt 0 ]
em vez de [ "$#" -ge 2 ]
no exemplo anterior).