2011-01-19 2 views
0

Я создавал службу init.d и читал несколько сценариев для справки. Я нашел это в скелете:Справка относительно скрипта оболочки

Что делает этот сниппета? Я понимаю, что это переключатель: case. Я спрашиваю об этом случае.

case "$1" in 
    start) 
     echo test 
     case "$?" in 
       0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 
       2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; 
     esac 

PS: Извините за титул, я не мог придумать лучшего имени

Спасибо.

+1

Что это за фрагмент, это * синтаксическая ошибка *, так как она неполна. – Sorpigal

ответ

2

Похоже, что подлинный скрипт мог иметь нечто более существенное, чем «эхо-тест». $? это код выхода, возвращаемый командой echo в этом скрипте. Внутренний оператор case печатает сообщение журнала, которое подходит для кода завершения. 0 | 1, скорее всего, успех. 2, вероятно, является ошибкой.

+0

У меня только эта строка: 'cd/usr/share/jetty;/usr/bin/java -jar start.jar' – theTuxRacer

+0

В этом случае он проверяет статус выхода java-процесса. –

0

$? содержит код выхода последней выполненной команды. Если 0 - ошибок не было.

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