views:

250

answers:

2

Hi again,

I'm not sure if it is possible but what I want to do is to run a bash command and storing the output in a variable AND display it as if I launched the command normally. Here is my code:

VAR=`svn checkout $URL`

So I want to store the output in VAR and still see the result (and because svn checkout takes a long time, I can't do echo $VAR just after..)

Thanks

+4  A: 

If the command is run from a terminal, you can do:

VAR=$(svn checkout $URL | tee /dev/tty)
Alok
Gah, beat me to it by seconds!
T.J. Crowder
Maybe because I tested the above with `v=$(for i in $(seq 20); do echo $i; sleep 0.2; done | tee /dev/tty)`, and you used `sleep 1`? :-)
Alok
Perfect, just what I needed. Thank you!
Selmak
+1  A: 

You don't have to call the external tee:

VAR=$(svn checkout $URL) && echo $VAR

or even:

VAR=$(svn checkout $URL); echo $VAR
Dennis Williamson
I think the idea was that `svn` takes a long time, and the OP wanted to see the output of the `svn` command in realtime, instead of after it ended. He even says so in the question :-)
Alok
I think I need to get some help on literacyoverflow!
Dennis Williamson