Именованные каналы спешат на помощь!
xyz() {
pipe="/tmp/$$pipe"
mkfifo "$pipe"
tee "$pipe" | "$@" | paste "$pipe" -
rm "$pipe"
}
Результаты вашего примера команды:
$ (echo "foo"; echo "bar") | xyz rev
foo oof
bar rab
Приведенная выше функция делает именно то, что вы описываете.
Одним из возможных решений может быть настройка вывода vgs
для печати результата в байтах без заголовка и суффикса единицы, а затем вы можете использовать bc
для вычисления суммы:
$ sudo vgs -o size --unit=b --no-suffix --no-headings
10737418240
20396900352
1069547520
$ sudo vgs -o size --unit=b --no-suffix --no-headings | paste -s -d+ - | bc
32203866112