[bash]入力した文字列がIPv4アドレスかを判定する

まずはソースを見てみましょう。
#!/bin/bash
function valid_ip()
{
local ip=$1
local stat=1
if [[ $ip =~ ^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$ ]]; then
OIFS=$IFS
IFS='.'
ip=($ip)
IFS=$OIFS
[[ ${ip[0]} -le 255 && ${ip[1]} -le 255
&& ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
stat=$?
fi
return $stat
}
# If run directly, execute some tests.
ips=$*
for ip in $ips
do
if valid_ip $ip;
then
stat='good'
printf "%-20s: %sn" "$ip" "$stat"
exit 0
else
stat='bad'
printf "%-20s: %sn" "$ip" "$stat"
exit 1
fi
done
引数に与えた文字列が、1~3桁で255までかどうかを判別しています。
[amazonjs asin=”4774146439″ locale=”JP” title=”[改訂新版] シェルスクリプト基本リファレンス --#!/bin/shで、ここまでできる (WEB+DB PRESS plus)”]