私のLinuxシェルスクリプトには、インターネットからサンプルファイルの平均ダウンロード速度を取得したいコードスニペットがあります。
次のコードを使用する場合:
targetURL=https://file-examples-com.github.io/uploads/2017/10/file_example_JPG_1MB.jpg 2>/dev/null
curl -L $targetURL | head -n 1| cut -d $' ' -f2
「Dload」の下に値が必要です(例出力では175です。取得した値を変数に保存します。
私の結果は次のとおりです
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0cut: stdin: Illegal byte sequence
3 1018k 3 33834 0 0 175k 0 0:00:05 --:--:-- 0:00:05 175k
curl: (23) Failed writing body (0 != 1362)
答え1
カールには、平均ダウンロード速度を提供する-w
オプションがあります。詳しくはリファレンスを--write-out
ご覧ください。 (curlで測定したフルダウンロードの平均ダウンロード速度、1秒あたりのバイト数と表示されています。)man curl
speed_download
url='https://file-examples-com.github.io/uploads/2017/10/file_example_JPG_1MB.jpg'
if avg_speed=$(curl -qfsS -w '%{speed_download}' -o /dev/null --url "$url")
then
echo "$avg_speed"
fi
標準出力curl
(バイト/秒単位の平均ダウンロード速度)は、というシェル変数に保存されますavg_speed
。たとえば、結果はを使用して印刷179199
できます。numfmt --to=iec <<<"$avg_speed"
175K
標準出力が結果に使用されるため、%{speed_download}
useは転送を別の場所(この場合はnullデバイス)に送信します-o
。