La fonction ci-dessous permet de tester une adresse IPv4 pour vérifier qu'elle est bien formée :
is_ipv4() {
local -r regex='^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$'
[[ $1 =~ $regex ]]
return $?
}
Et voici un exemple d'utilisation :
is_ipv4 $ip
if [ "$?" -ne 0 ]
then
echo "[x] $ip is not an IPv4"
exit 1
fi