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 valid_ip $ip; then 成功之後做點事; fi
不過若是簡單的 if, 我通常用這種寫法:
[ valid_ip $ip ] && 成功之後做點事;
上面提供的 valid_ip() 說真的很單純,也不完整,例如要判斷 192.168.1.* 就不行,不過就是提供大家參考怎麼用正規表示法也還不錯。這個範例裡提到 $? 是上一個命令的結果(True/False), local ip=$1 是引用呼叫函數傳進來的第一個參數。
0 意見:
張貼留言