2013-03-28 4 views
0

Я выполнение этой простой jar команды в Баше:Детектирование провал команды JAR в Bash

jar cvfm control.jar Manifest <class list> 

Как можно автоматизировать обнаружение сбоя при выполнении этой команды? несоблюдением я имею в виду, что команда просто не удалось выполнить из-за причин, таких как:

  • ошибка в Manifest,
  • неправильное использование самого jar команды,
  • некоторые случайные ошибки, как, ClassNotFoundError и т.д.

Имейте в виду, я не интересно знать, если право набор классов были заархивированы или нет. Поэтому я не буду считать, что это провал.

В настоящее время я просто использую подробный вариант для проверки, если все прошло хорошо или нет. Но я считаю, что это требует много времени. Я просто хочу знать, удалась ли команда jar в архивировании некоторого набора файлов классов или нет. Есть ли способ сделать это в bash?


ближайший другой ресурс по этому вопросу я нашел это: How to detect error if archive of jar file failed?. Но я не имею понятия о пакетных файлах, и мне интересно это сделать в оболочке bash.

ответ

2

Это самый основной способ, чтобы увидеть, если команда suceeded:

if jar cvfm control.jar Manifest <class list> ; then 
    echo "Success" 
else 
    echo "Oops!" 
fi 

Если вы только хотите, чтобы обнаружить неисправность, а затем инвертировать тест:

if ! jar cvfm control.jar Manifest <class list> ; then 
    echo "Oops!" 
fi 

Или проверить результат в явном виде:

jar cvfm control.jar Manifest <class list> 
if (($?)) ; then 
    echo "Oops!" 
fi 
+0

будет 'if (($?)); то выполняется условие только для последней выполненной команды или любой команды, которая была выполнена до того, как это условие было проверено? – vijay

+1

игнорировать предыдущий комментарий ... понял это ... :) – vijay

+1

Только самые последние. Фактически '(($?))' Сама меняет $ ?. Если вам нужно, чтобы он сохранялся, вы должны назначить его переменной сразу после команды, которую вы хотите отслеживать: 'result = $?' – William