私は、IPアドレスの妥当性をチェックするコードの小片があります条件付きで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
if [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 \
&& ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]; then
stat=1
else
stat=0
fi
fi
return $stat
}
をしかし、私はbashの条件式の中で、その使用に問題を抱えています。私はその戻り値をテストするために多くのテクニックを試しましたが、それらのほとんどは私には失敗します。
if [[ !$(valid_ip $IP) ]]; then
if [[ $(valid_ip IP) -eq 1 ]]; then
など私はここで何をするべきですか?
if valid_ip "$IP" ; then
... do stuff
else
perr "IP: \"$IP\" is not a valid IP address"
fi
と私は
IPのようなエラーが出る::私はのようなものを使用している、あなたの提案に続き
EDIT
"10.9.205.228" は、有効なIPではありませんアドレス
私の編集を見てください。 – Patryk
シェルは0を成功として解釈し、失敗として0以外を通常のブール解釈の逆と解釈します。'valid_IP'は、IPアドレスが有効であれば0を返し、そうでなければ1を返します。 – chepner
これは 'set -e'では動作しません –