Как правило, команды Unix / Linux завершают работу и выдают код выхода.Стандартное значение для успеха равно 0 и ненулевое значение для ошибок.
Вы можете видеть, что ваши HT-инструменты выдают правильно сформированные коды выхода, как этот
HTcopy ... (args ) ...
echo $?
, если вы настроили HTcopyтаким образом, вы знаете, что должны получить ошибку И echo $?
возвращает ненулевое значение, а затем проверьте, что хороший набор аргументов команды выдает 0.
Если вы получаете правильные коды выхода, вы можете написать свой код как
if HTcopy .. (args).. ; then
printf "do the next step\n"
#etc
else
printf "error on HTcopy, can't continue\n"
exit 1
fi
Другой способ заключается в захвате кода выхода в переменную
HTcopy ... (args ) ...
h_rc=$?
if [[ ${h_rc} != 0 ]]] ; then
printf "error on HTcopy, can't continue\n"
exit 1
fi
Кроме того, стандарт Unix / Linux использует два отдельных потока для сообщений.STDOUT - это место, куда отправляются обычные сообщения и сообщения об успехе, а STDERR - это то, куда отправляются сообщения об ошибках.Вы можете перехватить сообщения STDERR, перенаправив их в поток STDOUT.Используя приведенный выше пример, где «grep - это не стартер», вы можете сделать
./findWordBoundary.sh <input args> 2>&1 |& tee run.log
Надеюсь, это поможет.