Можно ли вести к документу или объяснить на нижеобработки в UNIX KSH оболочки Ошибка
- как использовать обработку ошибок в KSH.
- Как Unix работает с необработанными ошибками (например, ошибка произошла в индексе и т. Д.).
Можно ли вести к документу или объяснить на нижеобработки в UNIX KSH оболочки Ошибка
От 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 он Последняя команда выполнена (см. также команду выхода выше). Ошибки времени выполнения, обнаруженные оболочкой, сообщаются путем печати имени команды или функции и условия ошибки. Если номер строки, который , ошибка произошла, больше единицы, тогда номер строки также печатается в квадратных скобках ([]) после команды или функции .
Спасибо. Но что, если мы хотим обрабатывать ошибку внутри самой функции. можно ли проверить как «пробную попытку», как это сделано на некоторых других языках? – xGen
Привет @klashxx: То, что я имел в виду, - у меня есть функция X, написанная в скрипте Y, и я не хочу выходить из Y, если в X есть ошибка UNHANDLED. Вместо этого выйдите из X – xGen
Вам нужно будет проверить каждый ' command'/'cmd', выполняемое в функции, основное правило:' exit> 0' подразумевает обработку ошибок. – klashxx