对我来说,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。)这可能对性能没有帮助。