使用布尔表达式Bash脚本
我正在尝试编写一个Bash脚本,用于计算两个地址的最小公共子网 理论上:我必须将IP从十进制更改为二进制,然后在两个IP上应用XNOR 我试着写下:使用布尔表达式Bash脚本,bash,boolean,Bash,Boolean,我正在尝试编写一个Bash脚本,用于计算两个地址的最小公共子网 理论上:我必须将IP从十进制更改为二进制,然后在两个IP上应用XNOR 我试着写下: #!/bin/bash echo "Ebter the first ip" read ip1 echo "Enter the second ip" read ip2 #Separate octs of first ip a1=`echo $ip1 | awk 'BEGIN{FS="."}{print $1}'` a2=`echo $ip
#!/bin/bash
echo "Ebter the first ip"
read ip1
echo "Enter the second ip"
read ip2
#Separate octs of first ip
a1=`echo $ip1 | awk 'BEGIN{FS="."}{print $1}'`
a2=`echo $ip1 | awk 'BEGIN{FS="."}{print $2}'`
a3=`echo $ip1 | awk 'BEGIN{FS="."}{print $3}'`
a4=`echo $ip1 | awk 'BEGIN{FS="."}{print $4}'`
#convert decimal to binary
b1=`echo "obase=2;$a1" | bc`
b2=`echo "obase=2;$a2" | bc`
b3=`echo "obase=2;$a3" | bc`
b4=`echo "obase=2;$a4" | bc`
#Separate octs of second ip
c1=`echo $ip2 | awk 'BEGIN{FS="."}{print $1}'`
c2=`echo $ip2 | awk 'BEGIN{FS="."}{print $2}'`
c3=`echo $ip2 | awk 'BEGIN{FS="."}{print $3}'`
c4=`echo $ip2 | awk 'BEGIN{FS="."}{print $4}'`
#convert decimal to binary (second IP)
d1=`echo "obase=2;$c1" | bc`
d2=`echo "obase=2;$c2" | bc`
d3=`echo "obase=2;$c3" | bc`
d4=`echo "obase=2;$c4" | bc`
e1=`echo $b1 || $d1 | rev`
e2=`echo $b2 || $d2 | rev`
e3=`echo $b3 || $d3 | rev`
e4=`echo $b4 || $d4 | rev`
echo "$e1.$e2.$e3.$e4"
我有两个问题:
有人能帮我解决这个问题吗?首先,使用
read
将地址拆分为整数部分要简单得多
IFS=. read a1 a2 a3 a4 <<< "$ip1"
IFS=. read b1 b2 b3 b4 <<< "$ip2"
首先,使用
read
将地址拆分为整数部分要简单得多
IFS=. read a1 a2 a3 a4 <<< "$ip1"
IFS=. read b1 b2 b3 b4 <<< "$ip2"
谢谢你的回答,我想知道如果子网是224呢。你的脚本只适用于0或255。你能帮我完成我的脚本吗?因为我是bash的初学者,对我来说比较容易。谢谢这不是很好的测试,但是我得到了
255.255.255.224
地址192.0.2.4
和192.0.2.17
。谢谢你的回答,我想知道子网是否是224。你的脚本只适用于0或255。你能帮我完成我的脚本吗?因为我是bash的初学者,对我来说比较容易。谢谢这不是很好的测试,但是我得到了地址192.0.2.4
和192.0.2.17
的255.255.224
。