2015-12-23 5 views
1

Можно ли вести к документу или объяснить на нижеобработки в UNIX KSH оболочки Ошибка

  • как использовать обработку ошибок в KSH.
  • Как Unix работает с необработанными ошибками (например, ошибка произошла в индексе и т. Д.).

ответ

3

От kshмужчина страница.

Необработанных ошибки

Ошибка, обнаруженная с помощью оболочки, таких как синтаксические ошибки, вызвать оболочка вернуть статус выхода из ненулевых. Если оболочка используются неинтерактивно, то выполнения файла оболочка является заброшенномПОКА ошибка не происходит внутриподоболочку в этом случае подоболочку является заброшен ,

обработки

основномпроверки выхода/коды возврата для обработки ошибок Ошибка:

if [ $exit_code != 0 ]; then 
    # Your error handler 
fi 

Пример

test_handler() { 
    ls file_not_present 
    if [ $? -eq 2 ]; then 
    echo "Handler for No such file or directory" 
    elif [ $? -ne 0]; then 
    echo "Handler for any other exception" 
    else 
    echo "Succesful execution" 
    fi 
} 

Will бросок:

ls: cannot access non_file: No such file or directory 
Handler for No such file or directory 

Но если команда не выходит:

test_handler() { 
    l file_not_present 
    if [ $? -eq 2 ]; then 
    echo "Handler for No such file or directory" 
    elif [ $? -ne 0 ]; then 
    echo "Handler for any other exception" 
    else 
    echo "Succesful execution" 
    fi 
} 

Выход будет:

l: not found [No such file or directory] 
Handler for any other exception 

Отдача оболочки выход статус из t он Последняя команда выполнена (см. также команду выхода выше). Ошибки времени выполнения, обнаруженные оболочкой, сообщаются путем печати имени команды или функции и условия ошибки. Если номер строки, который , ошибка произошла, больше единицы, тогда номер строки также печатается в квадратных скобках ([]) после команды или функции .

+0

Спасибо. Но что, если мы хотим обрабатывать ошибку внутри самой функции. можно ли проверить как «пробную попытку», как это сделано на некоторых других языках? – xGen

+0

Привет @klashxx: То, что я имел в виду, - у меня есть функция X, написанная в скрипте Y, и я не хочу выходить из Y, если в X есть ошибка UNHANDLED. Вместо этого выйдите из X – xGen

+0

Вам нужно будет проверить каждый ' command'/'cmd', выполняемое в функции, основное правило:' exit> 0' подразумевает обработку ошибок. – klashxx

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