我想驗證短劃線腳本內的IP地址。我發現很多方法可以實現使用bash相同,如linuxjournal驗證一個IP在破折號(而不是bash)
基本上是什麼做用這樣的對比:
if [[ $ip =~ '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' ]]; then
do something
fi
有沒有什麼辦法讓與前圍一樣嗎?
UPDATE:這是最後的腳本,做我需要的東西:
#In case RANGE is a network range (cidr notation) it's splitted to every ip from
# that range, otherwise we just keep the ip
if echo $RANGE | grep -E -q '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\/[0-9]{1,2}$'; then
IPS=`prips $RANGE -e ...0,255`
if [ "$?" != "0" ] ; then
echo "ERROR: Not a valid network range!"
exit 1
fi
elif echo $RANGE | grep -E -q '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$'; then
IPS="$RANGE"
else
echo "$RANGE no is not a valid IP address or network range"
exit 1
fi
IP地址只是一個32位數字。你要求的是四角符號,但請記住十進制和十六進制符號同樣有效。 '0x1020304'和'16909060'與'1.2.3.4'相同。 – ghoti 2012-02-14 12:26:42
我只需要驗證人爲錯誤,除了我和我的同事之外沒有人會使用這個腳本,所以我可以選擇一個符號並堅持。 – user322049 2012-02-14 13:18:19
關於您的最終正則表達式,您可能會將其表示爲稍短一點:'^([0-9] {1,3} \。){3} [0-9] {1,3} \/[0-9] {1,2} $' – ghoti 2012-02-15 18:39:59