在这个例子中,我在OSX上使用stat,它使用z作为size的格式字符串:
$ { stat -f %z input; cat input; } | { read s; echo $s; }
用你的ssh调用替换第一个命令列表,并用你的pv列表替换echo,你就可以了。换句话说,你的最终命令应该是:
$ ssh $host "stat -c%s '$src_dir/$filename'; cat '$src_dir/$filename'" | { read size; pv --bytes --eta --progress --rate --timer --wait --size $size | tee "$filename" | sha1sum; } > "$filename.sha1"
我没有什么需要注意的事项:我没有访问光伏,也没有检查上面的内容。 我用管道符号替换了你的续行,因为我认为 它看起来更好。
另一个想法:在管道的右侧,您可以:
{ pv --bytes ... --size $( sed 1q ) | ...
这绝对依赖于sed没有读过第一个换行符,我不知道这是否有任何标准保证,但它适用于...哦,我的,我的sed不支持--version, - ?或-h ,我不知道OS X的包管理系统是否足以告诉你我正在运行的是什么。它适用于某些版本的BSD sed ...