The script is probably being called once for IPv4, and once for IPv6.
Based on running a small script on my machine, these are the variables you have in the environment, below. I should mention this was with network-manager version 1.2.6, on amd64.
You can use $ADDRFAM
to test which call is which. The other variables can be useful too:
ADDRFAM=inet6 # "inet" if ipv4
CONNECTION_FILENAME=/etc/NetworkManager/system-connections/WIFI_CONN
CONNECTION_UUID=b9464eff-3c0c-4035-1f65-9ac8ccda824f
DEVICE_IFACE=wlo1
DEVICE_IP_IFACE=wlo1
DHCP4_BROADCAST_ADDRESS=192.168.1.255
DHCP4_DHCP_MESSAGE_TYPE=5
DHCP4_DHCP_SERVER_IDENTIFIER=192.168.1.1
DHCP4_EXPIRY=1503257834
DHCP4_NETWORK_NUMBER=192.168.1.0
DHCP4_NEXT_SERVER=0.0.0.0
DHCP4_NTP_SERVERS=omitted
DHCP4_REQUESTED_DOMAIN_NAME=1
DHCP4_REQUESTED_DOMAIN_NAME_SERVERS=1
DHCP4_REQUESTED_HOST_NAME=1
DHCP4_REQUESTED_MS_CLASSLESS_STATIC_ROUTES=1
DHCP4_REQUESTED_NETBIOS_SCOPE=1
DHCP4_REQUESTED_RFC3442_CLASSLESS_STATIC_ROUTES=1
DHCP4_REQUESTED_ROUTERS=1
DHCP4_REQUESTED_STATIC_ROUTES=1
DHCP4_REQUESTED_SUBNET_MASK=1
DHCP4_REQUESTED_WPAD=1
DHCP4_TIME_OFFSET=3600
IP4_ADDRESS_0=192.168.1.37/24 192.168.1.1
IP4_NAMESERVERS=208.67.222.222
IP4_NUM_ADDRESSES=1
IP6_GATEWAY=::
IP6_NUM_ADDRESSES=1
MODE=start
PHASE=post-up
VERBOSITY=0