#!/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
Вы, кажется, ищет 'вариант pipefail'. См. [This] (http://stackoverflow.com/a/19027203/2235132) ответ. – devnull
Возможный дубликат [Проверить нулевые строки, выводимые командой SSH] (http://stackoverflow.com/questions/19027075/check-for-zero-lines-output-from-command-over-ssh) – devnull
@devnull получил такой скрипт с ошибкой. Не могли бы вы объяснить, что я делаю неправильно? – Aenry