2014-02-02 2 views
0
#!/bin/sh 
$(./tool <input.data> output.another_data 2> errors) 
echo $? 

Hello there. У меня был такой тупой простой скрипт для отладки моего инструмента. Однако перенаправление stderr только в файл без его печати на экран не так уж и удобно. Найдено, что tee пригодится в таких случаях.
Так дошла до такой версии.
$(./tool <input.data> output.another_data 2>&1 | tee errors.txt)
И вот я застрял. Вместо получения кода ошибки инструмента я получаю tee's.
Не могли бы вы дать совет о том, как получить ошибку инструмента не в тройке?
Заранее спасибо :-)Как получить код ошибки приложения в конвейере?

Итак, вот я. Теперь он читает строку 4: =: команда не найдена о линии $value=.... Что здесь может быть неправильным? ===================
EDIT:

#!/bin/bash 
set -o pipefail 

$value=$(./tool <input.data> output.another_data 2> errors) 
if [ $? == 0 ]; then 
     case $value in 
       1) echo "out of bounds" 
       ;; 
       2) echo "heap err" 
       ;; 
     esac 
fi 
+1

Вы, кажется, ищет 'вариант pipefail'. См. [This] (http://stackoverflow.com/a/19027203/2235132) ответ. – devnull

+0

Возможный дубликат [Проверить нулевые строки, выводимые командой SSH] (http://stackoverflow.com/questions/19027075/check-for-zero-lines-output-from-command-over-ssh) – devnull

+0

@devnull получил такой скрипт с ошибкой. Не могли бы вы объяснить, что я делаю неправильно? – Aenry

ответ

0

This ответ объясняет, как вы могли бы получить код возврата всех команд в конвейере , - devnull

Кроме того, в соответствии с вашими редактирования вы не должны бы говорить $value=..., а сказать value=... - devnull

Смежные вопросы