我有一個小小的一段代碼,檢查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: 「10.9.205.228」 不是一個有效的IP地址
請看看我的編輯。 – Patryk
shell將0解釋爲成功,將非零解釋爲失敗,與通常的布爾解釋相反。如果IP地址有效,'valid_IP'應該返回0,否則返回1。 – chepner
唯一的問題是這不會使用'set -e' –