技术解析

Linux 的 curl 命令如何获取下载文件的进度保存到变量或者实时保存到文件?
0
2021-06-15 06:36:17
idczone
a=`curl -o test.exe https://down.qq.com/qqweb/PCQQ/PCQQ_EXE/PCQQ2020.exe`
echo $a

像这样的话变量 a 是空的,根本无法获取下载速度和进度。


其实我是要从安卓上传文件到电脑上的 ftp,试过很多方法,linux 的 ftp 命令和 python 都不太稳定(应该是安卓的问题),经常出现各种莫名其妙的问题,只有 curl 上传文件到 ftp 最稳定,并且支持断点续传,比市面上的很多 app 都稳定很多。
之所以标题用“下载”,是因为这样描述更容易让人一眼看明白,并且两者的情况是完全类似的。
—progress-bar

在执行的时候你拿不到进度。盲猜一个信号量发给 curl 可以解决

curl 的进度是写进 stderr 的,你这样拿到的只有 stdout
而且只有命令执行完,a 才会有值(此时进度必然是 100%)
你想要边上传边读进度,需要再开一个进程,写个 while true 去读
————
ftp 客户端还一个 ncftp,试试这个?(虽然本质上解决不了进度读取的问题……
数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服