Bash 从ip地址获取网络id&;子网掩码

Bash 从ip地址获取网络id&;子网掩码,bash,shell,networking,scripting,Bash,Shell,Networking,Scripting,我正在尝试学习一些shell脚本,我认为这将是一个很好的方法,将它与我的ccna研究相结合。因此,我正在编写一个简单的脚本,根据用户提供的ip地址和子网掩码扫描一些网络设备。为了确定主机所属的网络,我使用了以下几行代码,但它不断给我带来错误 read -p "Geef een IP-adres op " i read -p "Geef een subnetmask op " s IFS=. read -r i1 i2 i3 i4 <<< $i IFS=. read -r

我正在尝试学习一些shell脚本,我认为这将是一个很好的方法,将它与我的ccna研究相结合。因此,我正在编写一个简单的脚本,根据用户提供的ip地址和子网掩码扫描一些网络设备。为了确定主机所属的网络,我使用了以下几行代码,但它不断给我带来错误

read -p "Geef een IP-adres op "  i
read -p "Geef een subnetmask op "  s

IFS=. read -r i1 i2 i3 i4 <<< $i
IFS=. read -r m1 m2 m3 m4 <<< $s

ip=`printf "%d.%d.%d.%d\n" $i1 $i2 $i3 $i4`
mask=`printf "%d.%d.%d.%d\n" $m1 $m2 $m3 $m4`

#bepaal netwerk id
id=`printf "%d.%d.%d.%d\n" "$((i1 & m1))" "$((i2 & m2))" "$((i3 & m3))" "$((i4 & m4))"`

这里有谁能告诉我原因吗?

问题在于引用输入到
read
调用的变量。如果您改为这样做(添加引号):


IFS=。读取-r i1 i2 i3 i4,因为对于整个脚本,IFS是“.”,所以$i被读取为:number,但是Thx!工作得很有魅力!
192 168 178 15 &  0xff 0xff 0xff 0x00: syntax error in expression (error token is "168 178 15 &  0xff 0xff 0xff 0x00")
IFS=. read -r i1 i2 i3 i4 <<< "$i"
IFS=. read -r m1 m2 m3 m4 <<< "$s"