开发者

bash output redirect prob

I want to count the number of lines output from a command in a bash script. i.e.

COUNT=ls | wc -l

But I also want the script to output the original output from ls. How to get this done? (My actual command is not ls and it has si开发者_C百科de effects. So I can't run it twice.)


The tee(1) utility may be helpful:

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

info coreutils "tee invocation" includes this following example, which might be more instructive of tee(1)'s power:

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

That downloads the file once, sends output through two child processes (as started via bash(1) process substitution) and also tee(1)'s stdout, which is redirected to a file.


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


Tee is a good way to do that, but you can make something simpler:

ls > __tmpfile

cat __tmpfile | wc -l
cat __tmpfile

rm __tmpfile
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜