我想統計bash腳本中命令輸出的行數。即bash輸出重定向概率
COUNT=ls | wc -l
但我也希望腳本輸出ls
原始輸出。如何完成這項工作? (我的實際命令不是ls
,它有副作用,所以我不能跑兩次。)
我想統計bash腳本中命令輸出的行數。即bash輸出重定向概率
COUNT=ls | wc -l
但我也希望腳本輸出ls
原始輸出。如何完成這項工作? (我的實際命令不是ls
,它有副作用,所以我不能跑兩次。)
的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)
的stdout,它被重定向到一個文件。
ls | tee tmpfile | first command
cat tmpfile | second command
它的工作原理!謝謝。 – nakiya 2011-03-08 06:51:39
T恤是做一個好辦法,但你可以做簡單的東西:
ls > __tmpfile
cat __tmpfile | wc -l
cat __tmpfile
rm __tmpfile
這裏有一個變量,把行數放在一個變量中,而不是添加到輸出中:'COUNT = $(ls -l | tee/dev/tty | wc -l)' – 2011-03-08 07:04:04
@Gordon Davisson,謝謝,那會對@nakiya想要的更有用。 :) – sarnold 2011-03-08 07:08:04
從技術上講,這是Bash的流程替代。 – 2011-03-08 11:48:40