[bash]入力した文字列がIPv4アドレスかを判定する
みなさんこんにちは。入力したIPアドレスが正しい形式かどうか、判定したいことがあるでしょう。そんな時に役立つシェルスクリプトがこれです。
まずはソースを見てみましょう。
#!/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)”]