«Программа прервана», но код ошибки не возвращен - PullRequest
1 голос
/ 30 декабря 2011

Сегодня, когда я проверил журнал скрипта, Я обнаружил, что команда (unrar) не выполнена («Программа прервана»), но об ошибке не сообщается ,

это мой фрагмент сценария:

unrar ...|tail -10 >> unrar.log  #I found "Program Aborted" here

if [[ "${?}" -ne "0" ]] 
then 
    echo "[ERROR] unrar application failed with $? errorcode"
else
    echo "[INFO] unrar application succeeded"

Это из-за чего-то не так с моим скриптом или самой системой?

1 Ответ

4 голосов
/ 30 декабря 2011

$?переменная содержит состояние выхода последней выполненной команды.В вашем случае это состояние выхода команды tail, которая не завершилась неудачей.В bash искомый статус выхода находится в массиве PIPESTATUS.Вы можете выполнить итерацию по массиву, чтобы увидеть, не дала ли какая-либо из команд в последнем конвейере ненулевой существующий статус.

failed=false
for status in "${PIPESTATUS[@]}"; do
    if (( status != 0 )); then
       failed=true
       break
    fi
done

if $failed; then
   echo "[ERROR] unrar application failed with $status errorcode"
else
   echo "[INFO] unrar application succeeded"
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...