我正在尝试编写一个bash脚本,将任何IP地址从CIDR转换为quad-style。
例如
192.168.1.1/24 ===> 192.168.1.1 255.255.255.0
我试着写这个
#!/bin/bash
echo "enter you ip"
read ip
b=`echo $ip | cut -d/ -f1`
a=`echo $ip | cut -d/ -f2`
if a=24 ; then
echo "$b 255.255.255.0"
fi
if a=25; then
echo "$b 255.255.255.128"
fi
我收到了这个输出:
1.1.1.1 255.255.255.0
1.1.1.1 255.255.255.128
当我进入/ 24或/ 25偶数/ 26时我没有写过如果条件,我得到相同的输出, 我的剧本有什么问题?
答案 0 :(得分:3)
尝试使用if
的语法if [ $a -eq 24 ];then
答案 1 :(得分:2)
if a=24 ; then
做的是检查作业a=24
是否成功。显然,它总是成功的(:D),即if
块总是通过测试。
在Bash中你可以这样做:
if ((a==24));then
或者如果您想要便携,请使用David Rosa的方法:
if [ $a -eq 24 ];then
答案 2 :(得分:1)
如果要访问变量的内容,则应使用$ var。
因此,在您的脚本中,您无需测试变量a
的内容,而是更改其内容。
您应该使用:
if [ $a -eq 24 ]
而不是if a=24
。
我建议你看看here以便很好地掌握shell变量。
答案 3 :(得分:1)
在bash中你可以使用
if (( a == 24 )); then