我想计算bash脚本中命令输出的行数。即。
COUNT=ls | wc -l
但我也希望脚本输出ls
的原始输出。怎么做到这一点? (我的实际命令不是ls
,它有副作用。所以我不能运行两次。)
答案 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