bash输出重定向概率

时间:2011-03-08 06:47:18

标签: bash output-redirect

我想计算bash脚本中命令输出的行数。即。

COUNT=ls | wc -l

但我也希望脚本输出ls的原始输出。怎么做到这一点? (我的实际命令不是ls,它有副作用。所以我不能运行两次。)

3 个答案:

答案 0 :(得分:4)

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发送输出,该stdout被重定向到文件。

答案 1 :(得分:2)

ls | tee tmpfile | first command
cat tmpfile | second command

答案 2 :(得分:0)

Tee是一种很好的方法,但你可以做一些更简单的事情:

ls > __tmpfile

cat __tmpfile | wc -l
cat __tmpfile

rm __tmpfile