TCPで未使用のポートを検出するスクリプト

下記では80ポートから255個目まで検索してどれも空いていなかったらエラーとします。

unset tmp_str
s_port_num=80
flag_1="0"
count="0"
while [ 1 ]; do
        unset tmp_str
        nmap -p $s_port_num localhost | grep open > /dev/null
        if [ $? = 0 ]; then
                flag_2="0"
        else
                unset tmp_str
                tmp_str=`grep -x "$s_port_num" /tmp/servlist`
                if [ "$tmp_str" != "$s_port_num" ]; then
                        break
                fi
        fi

        # カウンタを更新
        count=`expr $count + 1`
        s_port_num=`expr $s_port_num + $count`

        if [ $count -ge 255 ]; then
                echo "ポート番号検出中にエラーが発生しました"
                exit 0
        fi
done
echo $s_port_num