Для меня 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 ответ1

0

Это невозможно, потому что pv не оценивает NAME в первую очередь.

Ваша оболочка оценивает выражения $var и `cmd` прежде чем она выполнит какую-либо команду.

Таким образом, единственный способ сделать это - расширить код pv, чтобы научить его расширять переменные - либо самостоятельно, либо вызывая оболочку за помощью. (Тогда вы бы использовали pv -N "\$var" чтобы оболочка передавала $ var без изменений.) Это, вероятно, не поможет производительности.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .