出力の記録中にパイプ出力の値を変数として繰り返し抽出する方法

出力の記録中にパイプ出力の値を変数として繰り返し抽出する方法

5秒ごとにテレグラムボットにファイルのダウンロードステータスを更新したいと思います。ここでもbashを使っています。

aria2c $url --summary-interval=5 2>&1 | tee output.log | grep -oP "(\d+(\.\d+)?(?=%))"

これにより、5秒ごとにダウンロード率を得ることができます。このダウンロード率を使ってボットを定期的に更新したいと思います。私はこれを試しました

aria2c $url --summary-interval=5 2>&1 | tee output.log | grep -oP "(\d+(\.\d+)?(?=%))" | { read text; curl -s "https://api.legram.org/bot${tg_token}/editMessageText" --data "message_id=${msg_id}&text=DOWNLOADED-${text}&chat_id=${ch_id}&parse_mode=HTML&disable_web_page_preview=True"; }

2回試してください

aria2c $url --summary-interval=5 2>&1 | tee output.log | text=$(grep -oP "(\d+(\.\d+)?(?=%))") | curl -s "https://api.legram.org/bot${tg_token}/editMessageText" --data "message_id=${msg_id}&text=DOWNLOADED-${text}%&chat_id=${ch_id}&parse_mode=HTML&disable_web_page_preview=True"; }

しかし、それらのどれも働かなかった。その後、テストのためにこれを試しました。

aria2c $url --summary-interval=5 2>&1 | tee output.log | grep -oP "(\d+(\.\d+)?(?=%))" | { read text; echo "$text"; } 最後に、元のものとは異なる出力(おそらく最初のダウンロード%)を得ました。誰でも私に作業コードを与えることができますか?

ベストアンサー1

おすすめ記事