2016-01-28 105 views
1

我正在嘗試編寫一個bash腳本,用於將任何IP地址從CIDR轉換爲四元風格。腳本更改IP地址格式,

例如

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

我用了兩個變量A,B 一:只閱讀斜槓(子網) b:讀取ip地址 –

回答

1

在bash你可以使用

if ((a == 24)); then 
3

試試這個語法,如果

if [ $a -eq 24 ];then 
+0

其工作,謝謝你sooo多 –

+0

不客氣;) – drosam

1

如果您要訪問一個變量的內容,你應該使用$變種。

因此,在您的腳本中,不是測試變量a的內容,而是更改其內容。

你應該使用:

if [ $a -eq 24 ] 

,而不是if a=24

我建議你看看here以便很好地掌握shell變量。

2

if a=24 ; then做什麼檢查,如果分配a=24成功與否。顯然,它總是成功的(:D),即if塊總是通過測試。

在bash,那麼你可以這樣做:

if ((a==24));then 

或者,如果你想成爲便攜,使用David Rosa的方法:

if [ $a -eq 24 ];then