Mam mały kawałek kodu, który sprawdza ważność adresu IP:Jak korzystać z kodu powrotu bash w trybie warunkowym?
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
}
ale mam problemy z jego użytkowania w bash warunkowych. Próbowałem wielu technik, aby sprawdzić jego wartość zwrotu, ale większość z nich zawiodła.
itp. Czy ktoś może sugerować, co powinienem tu zrobić?
EDIT
Po swoimi sugestiami Użyłem coś takiego:
if valid_ip "$IP" ; then
... do stuff
else
perr "IP: \"$IP\" is not a valid IP address"
fi
i pojawiają się błędy jak
IP: "10.9.205.228" nie jest poprawnym IP adres:
Proszę spojrzeć na moją edycję. – Patryk
Powłoka interpretuje 0 jako sukces, a niezerową jako niepowodzenie, w przeciwieństwie do zwykłej interpretacji Boolean.'valid_IP' powinno zwracać 0, jeśli adres IP jest prawidłowy, a 1 w przeciwnym razie. – chepner
Jedynym problemem jest to, że nie będzie działać z opcją 'set -e' –