2017-06-27 116 views
0
#!/bin/bash 

PKT_SIZE='ifconfig | grep "MULTICAST" | cut -d ':' -f 2 | cut -d ' ' -f 1' 
HOSTNAME=$1 

count=`ping -M do -c 1 -s $PKT_SIZE $HOSTNAME | grep -c "Frag needed"` 

while [ $count -eq 1 ]; do 
((PKT_SIZE--)) 
count=$((`ping -M do -c 1 -s $PKT_SIZE $HOSTNAME | grep -c "Frag needed"`)) 
done 

printf "Your Maximum MTU is [ $((PKT_SIZE + 28)) ] \n" 

爲什麼((PKT_SIZE--))遞減不起作用?Bash腳本查找最大MTU

$ 1 - 這是我寫的網站平

+0

'PKT_SIZE ='ifconfig | grep「MULTICAST」| cut -d':'-f 2 |切斷-d''-f 1',命令替換不起作用。它應該是'PKT_SIZE = \'ifconfig | grep「MULTICAST」| cut -d':'-f 2 | cut -d''-f 1 \'' – zhenguoli

+0

是的,我知道我剛剛從編輯器插入 –

+0

有時理解和調試都會更好!通過幾個步驟來完成複雜的表達;這樣,中間體可以被檢查並且可以在腳本中被驗證。 – MikeW

回答

0

你之前,你的表達後,需要一個空間(())。

因此((PKT_SIZE--))

+0

它的工作原理。 '一個= 3; ((一個 - )); echo $ a' print'2'。該空間是可選的。 – zhenguoli

+0

但是從風格的角度來看,我會在這種情況下使用pre-dec操作 - 如果您不需要以前的值,爲什麼要使用post-dec? – MikeW

+0

「 - 」的位置是不相關的。因爲它沒有在表達式中使用'PKT_SIZE'的值。 – zhenguoli