Ich habe ein kleines Stück Code, die IP-Adresse Gültigkeit überprüft:Wie Bash-Return-Code in bedingten verwenden?
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 seiner Verwendung in bash conditionals habe. Ich habe viele Techniken ausprobiert, um den Rückgabewert zu testen, aber die meisten scheitern bei mir.
if [[ !$(valid_ip $IP) ]]; then
if [[ $(valid_ip IP) -eq 1 ]]; then
etc. etc. Kann jemand empfehlen, was soll ich hier tun?
EDIT
Ihre Vorschläge Im Anschluss habe ich so etwas wie verwendet:
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
Bitte werfen Sie einen Blick auf meine Bearbeitung. – Patryk
Die Shell interpretiert 0 als Erfolg und nicht Null als Fehler, im Gegensatz zur üblichen Booleschen Interpretation.'valid_IP' sollte 0 zurückgeben, wenn die IP-Adresse gültig ist und sonst 1. – chepner
nur Problem ist, wird dies nicht mit 'set -e' funktionieren –