pv:动态更改前缀

pv:动态更改前缀

对我来说,pv有时确实很方便。不过,我想知道是否可以即时更改前缀。

我的意思是通常我会有类似的东西

in.sh | pv -btrcN "Watch that work!!1!" | out.sh

我知道我无法在的内存中四处搜索pv,但是是否可以使用 NAME 字符串中的钩子之类的东西?

在这些例子中,表达式在pv开始时被评估:

in.sh | pv -btrcN "Watch that $var work!!1!" | out.sh
in.sh | pv -btrcN "Watch that `ls -1 | wc -l` work!!1!" | out.sh

我想要的是pv每次打印进度信息时都评估 NAME。这可能吗?也许需要一些非常肮脏的修补?;)

答案1

这是不可能的,因为 pv不是首先评估 NAME。

你的外壳在运行任何命令之前评估$var和表达式。`cmd`

因此,唯一可以做到的方法是扩展 pv 的代码,教它扩展变量 - 要么自己扩展,要么调用 shell 寻求帮助。(然后你就可以不加pv -N "\$var"改变地让 shell 传递 $var。)这可能对性能没有帮助。

相关内容