Wie zu verwenden die bash-return-code in bedingten?

Habe ich ein kleines Stück code, das überprüft die IP-Adresse Gültigkeit :

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
}

Aber ich habe Probleme mit der Verwendung in bash-Bedingungen. Ich habe versucht, viele Techniken, um zu testen, Rückgabewert, aber die meisten von Ihnen scheitern auf mich.

if [[ !$(valid_ip $IP) ]]; then

if [[ $(valid_ip IP) -eq 1 ]]; then

etc. etc. Kann jemand empfehlen, was sollte ich hier tun ?

BEARBEITEN

Folgenden Ihre Vorschläge, die ich verwendet haben, so etwas wie :

  if valid_ip "$IP" ; then
      ... do stuff
  else
      perr "IP: \"$IP\" is not a valid IP address"
  fi

und ich bekomme Fehler wie

IP: "10.9.205.228" ist keine gültige IP-Adresse

InformationsquelleAutor der Frage Patryk | 2013-07-10

Schreibe einen Kommentar