実際に行う必要があるのは、2、3 の変更だけです。コマンド置換を使用してコマンドの出力をキャプチャする必要があります。
speed=$( wget -O /dev/null http://ipv4.download.thinkbroadband.com/10MB.zip 2>&1 | grep --only-matching '\([0-9.]\+ [KM]B/s\)' )
$( ) 内のコマンドが実行され、その stdout が変数 $speed に割り当てられます。
root@host$ speed=$( wget -O /dev/null http://ipv4.download.thinkbroadband.com/10MB.zip 2>&1 | grep --only-matching '\([0-9.]\+ [KM]B/s\)' )
root@host$ echo $speed
5.50 MB/s
それでは、速度を目標と比較するだけです。しかし、ユニットが問題を引き起こす可能性があります
root@host$ val=${speed%% *}
root@host$ echo $val
5.50
root@host$ units=${speed##* }
root@host$ echo $units
MB/s
構文 ${var%%pattern} は、var の値の右側から pattern の最長一致を取り除き、結果を返すことを意味します。${var##patter} も同じことを行いますが、左側から行います。
これで、先に進んで確認できます
root@host$ if [[ ${units} == "MB/s" && $val > "5.0" ]]; then
> echo "PASS $speed"
> else
> echo "FAIL $speed"
> fi
PASS 5.50 MB/s
root@host$
ここでは、MB/s であることを確認してから、val が目標速度よりも大きいことを確認します。