alex lupu schrieb: > > ls -R linux-3.3.6 | tee >( grep devices > temp.txt) ; echo $PIPESTATUS > > How can I do a 'grep -m n ' (or similar - with an untimely death)
in your seceond example the second process terminates while the first (ls) still tries to deliver output to the pipe. to answer your question: ... tee >( grep -m 5 devices > temp.txt || exit 0 ) ; ... if 'grep' exits with <>0, terminate the subprocess with 0 but this won't solve the problem: 'ls' seems to delay its output for a while (don't ask me why!). now there is no more input to 'tee' and it will stop, closing the pipe. 'ls' is not really done, tries to write to the closed pipe and will die with exitcode 141. i've seen this quite often in constructs like while read $X ; do ... done < $( ls something ) i now use ls something >tempfile while read $X ; do ... done <tempfile btw: $PIPESTATUS is an ARRAY!! to get all exit codes use ... ; echo ${PIPESTATUS[@]} thus your $PIPESTATUS will be ${PIPESTATUS[0]} the exitcode from ls which exits with 141 whenever the output is piped and the pipe terminates while ls still writes to the pipe. have a look at http://tldp.org/LDP/abs/html/internalvariables.html and search for PIPESTATUS tobias -- http://linuxfromscratch.org/mailman/listinfo/blfs-support FAQ: http://www.linuxfromscratch.org/blfs/faq.html Unsubscribe: See the above information page