Что Set –e делать в Bash?
Set –e используется в Bash для мгновенной остановки выполнения при завершении запроса, имеющего ненулевой статус. Эта функция также используется, когда вам нужно знать место ошибки в работающем коде. Давайте продолжим статью, чтобы более подробно остановиться на понятии «set –e» в различных аспектах кодов.
Установите расширения Bash в Linux. Если он уже установлен, то вам необходимо обновить версию, потому что версия должна быть выше 4.
Пример 1
Здесь нам нужен файл с кодом Bash. Итак, создайте файл с помощью команды «touch» с помощью терминала Ubuntu. Это написано как:
Здесь мы будем использовать два подхода. Один из них — использовать «set –e» вне тела функции, а другой — использовать его внутри функции. Рассмотрим файл «file1.sh». Нам нужен файл с расширением .sh, так как мы пишем код на языке Bash. В этом примере рассматривается добавление функции с именем «helo».
В этой функции мы хотим напечатать строку, поэтому мы просто использовали здесь команду echo для отображения сообщения. Поскольку мы объявили здесь функцию, здесь должен быть необходим вызов функции. Итак, в конце концов, мы использовали имя функции в качестве вызова функции. Здесь «set –e» используется в начале, что означает вне тела функции.
Set –e просто относится к написанию или установке кода ошибки.
Мы использовали простой текстовый редактор, который присутствует в системе Ubuntu по умолчанию.
Теперь переходим ко второму подходу, где мы должны использовать «set –e» внутри функции. Мы увидим разницу между этими подходами. Отредактируйте данный код, заменив «set –e» снаружи тела функции внутри тела функции «helo», тогда как оставшийся код такой же, как и предыдущий. Вы можете проверить по вставленному изображению.
Запустите ту же команду еще раз на терминале, чтобы получить результат.
Это означает, что set -e не вызывает изменений при использовании внутри или вне тела функции.
Пример 2
Это довольно простой пример, в котором после объявления расширения bash в файле мы использовали «set –e» во внешнем теле функции. «set –e » позволяет терминалу генерировать исключение, когда он находит ошибку, а затем выполнение кода останавливается. Затем здесь объявляется функция ошибки. Единственная цель этой функции — отобразить сообщение об ошибке вместе с номером строки, содержащей ошибку.
В этом примере есть нечто особенное — использование ключевого слова «ловушка». Это ключевое слово позволяет использовать встроенную функцию ERR, которая принимает номер строки с ошибкой и затем передает его функции обработки ошибок. Для этой цели идентификации и отображения ошибки нам нужно добавить оператор или переменную, которая не включена в bash, или использовать какую-то значимую строку с изменением значений синтаксиса.
Согласно этому коду результат должен показать ошибку в строке 10.
Выполните код на терминале, используя файл. Вы можете сказать, что имя файла отображается с номером строки, и выдается исключение, которое показывает, что команда не найдена. Во-вторых, наличие сообщения функции для отображения номера строки, в которой произошла ошибка.
Пример 3
В этом примере рассматривается использование двух файлов bash. Один из них — file1.sh, а другой — file2.sh. Сначала рассмотрим файл2.sh. Здесь мы использовали «set –e», и он не используется в другом файле. Точно так же в этом файле мы использовали только вызов функции, тогда как все тело функции объявлено в другом файле. Мы связали оба файла с помощью ключевого слова «источник», чтобы вызов функции, который мы здесь сделали, мог выполнить функцию из другого файла.
После этого в вызове функции также отображается слово.
«Привет» — это имя функции.
Теперь рассмотрим другой файл file1.sh. в этом файле объявлена функция helo1(). В теле функции мы отобразили только сообщение.
Переходим к другой функции — helo(). Это та же самая функция, которая была вызвана по имени в первом файле, который мы обсуждали. Внутри этой функции мы снова использовали вызов функции helo1(). Это объявлено над текущей функцией в том же файле, поэтому нам не нужно связывать оба файла с помощью ключевого слова «источник». При вызове функции выводится сообщение:
Все исполнение сделано таким образом, что мы будем запускать файл2.sh в терминале. Таким образом, будет выполнен первый вызов функции, и управление переместится в сторону функции helo() в файле file1.sh. Это выполнит вызов этой функции, и теперь управление переместится к первой функции файла. Давайте посмотрим, как отображается вывод.
Теперь вы можете видеть, что сначала отображается слово из файла file2.sh, а затем сообщение функции «helo1()», то есть «ожидание», а затем сообщение функции helo(). Поскольку мы использовали «выход 1», управление ему не передается, поэтому снова нет роли «set -e». Если вызов функции не обрабатывается, должна преобладать ошибка.
Пример 4
Этот пример содержит полное понимание «set –e». Возьмите четыре функции в этом примере. Поскольку мы знаем, что встроенный set –e используется для выхода из кода, когда он получает ненулевой статус. В этом примере мы использовали «0» только для одной функции, которая является первой. Все остальные функции возвращают 1. Это означает, что выполнение кода прекратится после отображения первой функции. Но этого не будет. Здесь мы использовали «set +e», который противоположен «set –e». Всякий раз, когда «set –e» заставит код прекратить выполнение, противоположный код будет противодействовать ему всякий раз, когда он встречает ненулевое значение. «set +e» объявляется перед вызовом функции первых двух функций и «set –e» перед вызовом функции двух последних методов.
Теперь будут выполняться первые две функции. Во второй функции, поскольку это ненулевое значение, компилятор заставит выдать ошибку, но «set +e» нейтрализует значение. Когда придет время для третьей функции, оба сообщения будут отображаться эхом, но когда элемент управления перейдет к значению «return 1», код остановится. Как и здесь, мы не использовали «set +e». Поэтому 4-я функция здесь не выполняется.
Выполните код в терминале, чтобы увидеть результирующее значение.
Заключение
В этом руководстве показано, как работает «set –e». В примерах именно так он используется для завершения выполнения. Тем не менее, оппонент «set +e» также используется здесь, чтобы проиллюстрировать работу.