如何在shell脚本中正确设置pv大小

如何在shell脚本中正确设置pv大小,shell,pipe,size,Shell,Pipe,Size,我正在编写备份脚本,希望看到tar的正确进度。 脚本的主要部分: backup_file="root-backup-$(date +%Y.%m.%d-%H.%M.%S).tar" sudo -v sudo mount /dev/vg/root /mnt time sudo sh -c "cd /mnt; tar --xattrs -cf - . | pv -s $(du -sb | grep -o '[0-9]*') > /backup/${backup_file}" 但pv显示快速填充

我正在编写备份脚本,希望看到tar的正确进度。 脚本的主要部分:

backup_file="root-backup-$(date +%Y.%m.%d-%H.%M.%S).tar"
sudo -v
sudo mount /dev/vg/root /mnt
time sudo sh -c "cd /mnt; tar --xattrs -cf - . | pv -s $(du -sb | grep -o '[0-9]*') > /backup/${backup_file}"
但pv显示快速填充进度条,然后数量增加到100000%


Upd1。脚本中已修复打印错误。实际上它可以工作,但进度条不正确。

我发现了问题:
$(du-sb | grep-o'[0-9]*')
没有在新的子shell下调用-它是作为命令替换调用的

所以,在运行
sudosh-c
bash调用
$(du-sb | grep-o'[0-9]*')
之前,在当前的某个目录中(在我的例子中,这个目录较小)并将结果替换为字符串

因此,
pv-s
的大小不正确,显示的进度不正确

我决定防止用单引号替换周围的符号
$


time sudo sh-c“cd/mnt;tar--xattrs-cf-.| pv-s”'$'(du-sb | grep-o'[0-9]*')>/backup/${backup_file}”