2012-06-18 16 views
27

Bash Jak przechwycić stderr do zmiennej?Bash Jak przechwycić stderr do zmiennej?

chciałbym zrobić coś takiego wnętrza mojego skryptu bash

sh -c path/myExcecutable-bin 2>&1 =MYVARIABLE 

Jak wysłać wyjście stderror do zmiennej?

+2

ten StackOverflow [wątku] (http://stackoverflow.com/questions/962255/how-to-store-standard-error-in- a-variable-in-a-bash-script) powinien odpowiedzieć na twoje pytanie. –

+0

Zobacz jeden z wielu powiązanych wątków i [kilka rozwiązań] (http://mywiki.wooledge.org/BashFAQ/002) – ormaaj

Odpowiedz

55

Aby zaoszczędzić stdoutistderr do zmiennej:

MYVARIABLE="$(path/myExcecutable-bin 2>&1)" 

Zauważ, że ten przeplata stdout i stderr do tej samej zmiennej.

Aby zapisać tylkostderr do zmiennej

MYVARIABLE="$(path/myExcecutable-bin 2>&1 > /dev/null)" 
+5

Po prostu chcę zauważyć, że zachowasz zarówno stderr, jak i stdout do zmiennej. Gdy potrzebujesz tylko 'stderr' użyj' 2> & 1>/dev/null' –

+0

@IgorChubin Dobra uwaga. Opierałem swoją oryginalną odpowiedź na tym, jak to wyglądało, co OP chciał zrobić, ale niekoniecznie to, czego oni naprawdę chcieli. Zobacz moje zmiany. –

+0

Całkiem pewne, że powinno to być "' stdout' _ and_ 'stderr'", nie? –

Powiązane problemy