2017-06-27 5 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 - これは、私はあなたが(())で、あなたの表現の前後にスペースを必要とするのping

+0

'PKT_SIZE = 'ifconfig | grep "マルチキャスト" | cut -d ':' -f 2 | cut -d '' -f 1''の場合、コマンドの置換は機能しません。これは、 'PKT_SIZE = \' ifconfig | grep "マルチキャスト" | cut -d ':' -f 2 | cut -d "-f 1 \' ' – zhenguoli

+0

はい、私はちょうど編集者から挿入したことを知っています –

+0

時には、理解とデバッグの両方がより良いです!複雑な表現をいくつかのステップで行う。その方法では、中間体をチェックし、スクリプトで検証することができます。 – MikeW

答えて

0

のためのウェブサイトを作成しています。

したがって(PKT_SIZE--)

+0

これは機能します。 'a = 3; ((a--)); echo $ a''''''を出力します。スペースはオプションです。 – zhenguoli

+0

しかし、スタイルの観点から、私はこの場合にpre-dec操作を使用します。なぜ以前の値を必要としない場合はpost-decを使用しますか? – MikeW

+0

'--'の位置は無関係です。これは式で 'PKT_SIZE'の値を使用していないためです。 – zhenguoli

関連する問題