我正在尝试使用aria2c下载文件。该命令如下所示:
aria2c --http-user=$USER --http-passwd=$usepw -x 16 -s 100 $urlPath
当以这种方式运行时,该命令可以完美地从脚本中运行。我尝试做的是将命令的输出捕获到变量,并仍然实时显示在屏幕上。
我已使用以下方法成功将输出捕获到变量:
VAR=$(aria2c --http-user=$USER --http-passwd=$usepw -x 16 -s 100 $urlPath)
但是,在这种情况下,屏幕上会出现很长的延迟,而下载过程中没有更新。我在脚本中的这一行之后有一个echo命令,$ VAR已经捕获了所有的aria2c下载数据。
我尝试过使用2>& 1和|的不同组合命令末尾的tee / dev / tty,但实时显示中没有任何内容。
Example:
VAR=$(aria2c --http-user=$USER --http-passwd=$usepw -x 16 -s 100 $urlPath 2>&1)
VAR=$(aria2c --http-user=$USER --http-passwd=$usepw -x 16 -s 100 $urlPath 2>&1 | tee /dev/tty )
VAR=$(aria2c --http-user=$USER --http-passwd=$usepw -x 16 -s 100 $urlPath | tee /dev/tty )
VAR=$((aria2c --http-user=$USER --http-passwd=$usepw -x 16 -s 100 $urlPath) 2>&1)
VAR=$((aria2c --http-user=$USER --http-passwd=$usepw -x 16 -s 100 $urlPath) 2>&1 | tee /dev/tty )
VAR=$((aria2c --http-user=$USER --http-passwd=$usepw -x 16 -s 100 $urlPath) 2>&1 ) | tee /dev/tty )
我已经能够使用" 2>& 1 |三通"之前与其他命令的组合,但出于某种原因,我似乎无法同时捕获aria2c。任何人都有幸从bash脚本中做到这一点吗?
答案 0 :(得分:0)
由于aria2c似乎输出到stdout,请考虑将tee
转换为stderr:
var=$(aria2c --http-user=$USER --http-passwd=$usepw -x 16 -s 100 $urlPath | tee /dev/fd/2)
stdout最终在var
,而tee
将其复制到stderr,显示在屏幕上。