Сценарии оболочки — команда Set
В этой статье мы увидим команду SET в сценариях bash.
Команда Set: используется для установки или снятия определенных флагов и настроек (определяет поведение скрипта и помогает выполнять задачи без каких-либо проблем) внутри среды оболочки. Его можно использовать для изменения или отображения атрибутов и параметров оболочки.
Синтаксис:
set -options arguments
Команда set поддерживает следующие параметры:
| Вариант | Описание |
|---|---|
| -а | используйте, чтобы пометить переменные, которые создаются, изменяются или создаются для экспорта. |
| -б | использовать для уведомления о прекращении работы. |
| -е | используйте для выхода, когда команда завершается с ненулевым статусом. |
| -f | он отключает генерацию имени файла, известную как подстановка |
| -час | Он сохраняет местоположение команды, где она была просмотрена. |
| -к | Он помещает все аргументы присваивания в переменную окружения команды. Исключение: исключаются все аргументы, которые предшествуют имени команды. |
| -м | Это позволяет контролировать работу |
| -н | Он используется для чтения команд. |
| -о | Он используется для именования опции |
| -п | Он отключает обработку файла $ENV, а также импортирует функции оболочки. Включается: когда реальный и эффективный идентификаторы пользователей не совпадают. |
| -т | Он используется для выхода из команды после выполнения одной команды |
| -у | Он рассматривает неустановленную переменную как ошибку во время подстановки. |
| -v | Он печатает строки ввода оболочки |
| -Икс | Он печатает команды и их аргументы в той же последовательности, в которой они были выполнены. |
| -Б | Он выполняет расширение Brace оболочкой |
| -С | Он запрещает перезапись существующих обычных файлов. |
| -Э | используется, когда функции оболочки наследуют ловушку ERR |
| -ЧАС | Это позволяет подменять историю стилей. Он включен по умолчанию. |
| -П | используется, когда во время выполнения команды мы не хотим переходить по символическим ссылкам. |
| -Т | установите этот флаг, это поможет функциям оболочки наследовать ловушку DEBUG |
Для демонстрации использования команды set давайте воспользуемся какой-нибудь командой set.
Установить команду -x
Эта опция печатает команды в той последовательности, в которой они были выполнены, или в основном используется для отладки скриптов.
Код:
set -x echo Hello echo Romy
Выход:
bar hello Romy + echo bar + echo hello + echo Romy
Мы можем видеть, что команды печатаются после выполнения команды со знаком «+».
Установить команду -e
Он прекращает выполнение при возникновении ошибки.
Код: (без набора -e)
echo Hello foo echo Romy
Выход:
Hello Romy main.sh: line 14: foo: command not found
«foo» — несуществующая команда, но bash все же выполнил третью строку после обнаружения ошибки во второй строке. Мы можем использовать команду set, чтобы остановить прерывание.
Код: (с набором -e)
set -e echo Hello foo echo Romy
Выход:
Hello main.sh: line 15: foo: command not found
Мы видим, что третья строка не печатается, так как выполнение было прекращено после второй строки.
Передаваемые команды
Команда set -e не работает с конвейерными командами.
Пример:
set -e foo | echo " This is the piped command" echo "executed"
Выход:
This is the piped command executed main.sh: line 3: foo: command not found
Мы видим, что третья строка выполняется, а не завершает выполнение после второй строки.
Чтобы решить эту проблему, мы должны использовать «set -eo pipefail».
Установить -eo pipefail
Пример:
set -eo pipefail foo | echo " This is the piped command" echo "executed"
Выход:
This is the piped command main.sh: line 13: foo: command not found
Установите позиционные параметры с помощью команды set
Его можно использовать для присвоения значений позиционным параметрам. Позиция значения, указанного как ${N}, где N обозначает позицию параметра.
$1 — это первый позиционный параметр после команды. Значение $2 является вторым параметром и так далее.
Пример:
set apple mango orange guava echo $1 echo $2 echo $3 echo $4
Выход:
apple mango orange guava
Сбросить позиционные параметры
Чтобы сбросить позиционный параметр, запустите команду set, за которой следуют два дефиса (set –).
Пример:
set apple mango orange guava set -- echo $1 echo $2 echo "Hello"
Выход:
Hello
Мы видим, что ничего не печатается в соответствии с первыми двумя командами для печати позиционных параметров.