मैं कोड का एक छोटा टुकड़ा है जो की जाँच करता है आईपी पते वैधता:सशर्त में बैश रिटर्न कोड का उपयोग कैसे करें?
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
}
लेकिन मैं बैश सशर्त में इसके उपयोग के साथ समस्या हो रहा हूँ। मैंने अपने रिटर्न वैल्यू का परीक्षण करने के लिए कई तकनीकों की कोशिश की है लेकिन उनमें से ज्यादातर मुझ पर असफल हो जाते हैं।
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
और मैं की तरह
आईपी त्रुटियों मिलती है: "10.9.205.228" मान्य IP नहीं है पता
कृपया मेरे संपादन पर एक नज़र डालें। – Patryk
शेल सामान्य बुलीयन व्याख्या के विपरीत, सफलता के रूप में 0 और विफलता के रूप में गैर-शून्य के रूप में व्याख्या करता है।यदि आईपी पता मान्य है, और 1 अन्यथा 'valid_IP' वापस आना चाहिए। – chepner
केवल समस्या यह है कि यह 'set -e' के साथ काम नहीं करेगा –