-1

我有一个带有 IP 地址的字符串:

172.27.16.123

我有一个类似的第二个字符串。

我需要四个不同变量中的四个部分,即 v1=172, v2=27,v3=16,v4=123 我想要这样做的原因是我想获取第三个 ip 并查看它是否位于这两个 ip 之间

我试过

echo $givenip | cut -d\. -f3  
4

3 回答 3

0

v11=$(回显 $ip1 | 剪切 -d.-f3)

回声 $v11

于 2013-04-23T18:46:11.453 回答
0
export v1=`echo $givenip | cut -d\. -f3`
于 2013-04-23T18:46:15.607 回答
0

假设您的 shell 是bash,您可能应该使用数组:

givenip=172.27.18.191
ip1=( $(sed 's/\./ /g' <<< 172.27.16.123) )
ip2=( $(sed 's/\./ /g' <<< 172.27.19.254) )
ip3=( $(sed 's/\./ /g' <<< $givenip) )

然后你可以比较组件:

givenip=172.27.18.191
ip1=( $(sed 's/\./ /g' <<< 172.27.16.123) )
ip2=( $(sed 's/\./ /g' <<< 172.27.19.254) )
ip3=( $(sed 's/\./ /g' <<< $givenip) )

if [ "${ip3[0]}" -ge "${ip1[0]}" -a "${ip3[0]}" -le "${ip2[0]}" ] &&
   [ "${ip3[1]}" -ge "${ip1[1]}" -a "${ip3[1]}" -le "${ip2[1]}" ] &&
   [ "${ip3[2]}" -ge "${ip1[2]}" -a "${ip3[2]}" -le "${ip2[2]}" ] &&
   [ "${ip3[3]}" -ge "${ip1[3]}" -a "${ip3[3]}" -le "${ip2[3]}" ]
 then echo $givenip is between two established IP addresses
 else echo $givenip is not between the two established IP addresses
 fi
于 2013-04-23T18:48:08.857 回答