bash output redirect prob - PullRequest
       11

bash output redirect prob

1 голос
/ 08 марта 2011

Я хочу посчитать количество строк, выводимых командой в скрипте bash.т.е.

COUNT=ls | wc -l

Но я также хочу, чтобы скрипт выводил исходный вывод из ls.Как это сделать?(Моя настоящая команда не ls и у нее есть побочные эффекты. Поэтому я не могу выполнить ее дважды.)

Ответы [ 3 ]

4 голосов
/ 08 марта 2011

Может пригодиться утилита tee(1):

$ ls | tee /dev/tty | wc -l
CHANGES
qpi.doc
qpi.lib
qpi.s
4

info coreutils "tee invocation" включает в себя следующий пример, который может быть более поучительным для силы tee(1):

 wget -O - http://example.com/dvd.iso \
   | tee >(sha1sum > dvd.sha1) \
         >(md5sum > dvd.md5) \
   > dvd.iso

Это загружает файл один раз, отправляет выходные данные через два дочерних процесса (как запущено через bash(1) подстановка процесса), а также стандартный вывод tee(1), который перенаправляется в файл.

2 голосов
/ 08 марта 2011
ls | tee tmpfile | first command
cat tmpfile | second command
0 голосов
/ 08 марта 2011

Тройник - хороший способ сделать это, но вы можете сделать что-то попроще:

ls > __tmpfile

cat __tmpfile | wc -l
cat __tmpfile

rm __tmpfile
...