-1

IP アドレスを含む文字列があります。

172.27.16.123

同様の 2 番目の文字列があります。

v1=172、v2=27、v3=16、v4=123 という 4 つの異なる変数の 4 つの部分が必要です。これが必要な理由は、3 番目の IP を取得して、これら 2 つの IP の間にあるかどうかを確認するためです。

私は試した

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

3 に答える 3

0

v11=$(echo $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

シェルが であると仮定すると、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 に答える