> > You can't do that. Bash has a builtin variable ("$?") for holding the exit > > status, which you can then reassign to another variable if you need to > > store it for later use. For example: > > > > x=$? > > ok, but what if i want to capture the exit status of grep in the following > command: > grep "test" testfile.txt | tee test.out > in that case $? always == 0, regardless of the exit status of grep. That is because $? will always be the return value of the last command that was run. If you have a pipeline (a | b | c) it will be the value of the return code of the last command in the pipeline, in your case 'tee'. tee finishes fine.
One trick I used to get around something like this where I needed a pipeline and had to tell if the middle command succeded or not is: a | ( b ; echo $? > /tmp/$$ ) | c In your case this would look like: tmpfile=/tmp/$$ (./configure ; echo $? > $tmpfile) | tee test.out rval=`cat $tmpfile`; rm -rf $tmpfile -- // Andrew MacKenzie | http://www.edespot.com // Also, the Scots are said to have invented golf. Then they had // to invent Scotch whiskey to take away the pain and frustration.
msg92646/pgp00000.pgp
Description: PGP signature