2017-01-13 4 views
1

から番号を取得:bashの - コマンドから<em>CHK</em>ファイルに記録された典型的な出力ストリーム

wget -O - http://website/file > /dev/null 2>chk & 

のようなものです:

0K .......... .......... .......... .......... .......... 0% 143K 62s 

    50K .......... .......... .......... .......... .......... 1% 433K 41s 

100K .......... .......... .......... .......... .......... 1% 1.20M 30s 

150K .......... .......... .......... .......... .......... 2% 259K 31s 

200K .......... .......... .......... .......... .......... 2% 83.2M 24s 

... 

8800K .......... .......... .......... .......... .......... 98% 260K 1s 

8850K .......... .......... .......... .......... .......... 98% 329K 0s 

8900K .......... .......... .......... .......... .......... 99% 433K 0s 

8950K .......... .......... .......... .......... ......... 100% 331K=31s 

2017-01-13 13:16:59 (288 KB/s) - written to stdout [9215609/9215609] 

ファイルが更新され、行の後の行、全体のダウンロードプロセス中に。 さて、私はパーセンテージだけを取得する必要があります:0,1,2 ... 99とそれ以上のものはありません。私は以下のように、bashスクリプトに同じことを行う必要があるとき

tail -n 5 chk | tail -n 1 | colrm 1 63 | cut -d '%' -f 1 

問題が発生:

#!/bin/bash 
# Test script for getting the percentage number from 'wget' output 
i=0 
wget -O - http://website/file > /dev/null 2>chk & 
sleep 1 

while (($i < 90)) 
do 
i=`tail -n 5 chk | tail -n 1 | colrm 1 63 | cut -d '%' -f 1` 
echo $i 
done 

ない完全があっても

次のスクリプトは、仕事をしますスクリプトは必要なファイルの取得を開始し、chkファイルを書き出しますが、エラーメッセージで停止します。

line 9: ((: < 90 : syntax error: operand expected (error token is "< 90 ") 

[[]]、引用符を使って試しましたが、うまくいきません。

もっと良い仕事をするためのここのアイデアはありますか? wgetの、です:whiptailおよびGNUと

答えて

1

プログレスバーのsed:

wget --progress=dot 'URL' 2>&1 | sed -un 's/.* \([0-9]\+\)% .*/\1/p' | whiptail --gauge "Download" 7 50 0 
+0

ありがとうございました。ポイントは、私が探していた数字は、whiptail - ゲージのダイアログスクリプトで処理され、進捗バーを作るのに数字が必要だということです。 – MAXIM

+0

私は自分の答えを更新しました。今度の出力では、%の後に数字が表示されません。 – Cyrus

+0

素晴らしい!あなたの答えに多くの感謝!スクリプトの仕組みを段階的に説明できますか? whiptailで実装できるように--Gauge – MAXIM

関連する問題