I don't have an eth2 to check this on but it works correctly on eth0 and I see no reason why eth2 should be magical. I presume you're using
ip addr show dev eth2 as
ifconfig eth2 doesn't appear to show the additional addresses added by ip.
One thing I have noticed is that the order you create/delete the addresses is important. The second and subsequent addresses added within the same network will be deleted if the primary address is deleted. Consider ...
inet 126.96.36.199/24 scope global eth0
inet 188.8.131.52/24 scope global eth0
inet 184.108.40.206/24 scope global secondary eth0
inet 220.127.116.11/24 scope global secondary eth0
If you delete 18.104.22.168 then the 1.2 and 1.3 addresses will be deleted too. If you delete any other address then only that address will be deleted.