2017-06-27 78 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