2010-01-17 4 views
17

Я не уверен, что это возможно, но то, что я хочу сделать, это запустить команду bash и сохранить вывод в переменной AND, как показано на рисунке запустил команду в обычном режиме. Вот мой код:Отображение вывода команды Bash и сохранение вывода в переменной

VAR=`svn checkout $URL` 

Так что я хочу, чтобы сохранить вывод в УАК и по-прежнему видеть результат (и потому, что SVN Checkout занимает много времени, я не могу сделать эхо $ УАК только после того, как ..)

Благодарности

ответ

17

Если команда запускается с терминала, вы можете сделать:

VAR=$(svn checkout $URL | tee /dev/tty) 
+1

Гах, опередил меня на несколько секунд! –

+0

Возможно, потому, что я тестировал выше с помощью 'v = $ (для i в $ (seq 20), do echo $ i; sleep 0.2; done | tee/dev/tty)', и вы использовали 'sleep 1'? :-) –

+0

Отлично, только то, что мне нужно. Спасибо! – Selmak

2

вы не должны вызывать внешнюю tee:

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

или даже:

VAR=$(svn checkout $URL); echo $VAR 
+0

Я думаю, что идея заключалась в том, что 'svn' занимает много времени, и OP хотел увидеть вывод команды' svn' в режиме реального времени, а не после его окончания. Он даже так говорит в вопросе :-) –

+1

Думаю, мне нужно получить помощь по распространению грамотности! –