Команда Set Linux

Команда Set Linux Изучение

Команда Linux set — это встроенная команда оболочки, которая позволяет отображать или устанавливать переменные оболочки и среды. В этом руководстве мы рассмотрим команду set и продемонстрируем различные способы использования утилиты командной строки.

Базовый синтаксис

Команда set имеет следующий синтаксис:

command -options arguments

Параметры команды

Существует множество опций, которые можно использовать с командой set. Давайте рассмотрим некоторые из них:

  • -a: опция -a устанавливает все созданные или измененные переменные или функции для экспорта.
  • -b: опция -b немедленно предупреждает пользователя о завершении фоновых заданий.
  • -e:параметр -e указывает оболочке выйти, если команда дает ненулевой статус выхода. Проще говоря, оболочка завершает работу при сбое команды.
  • -f:опция -f отключает создание имен файлов.
  • -h:опция -h включена по умолчанию. Он находит и запоминает функцию, ожидающую выполнения.
  • -n:опция -n только читает команды, но не выполняет их.
  • -t:опция -t завершает работу после чтения и выполнения одной команды.
  • -u:опция -u обрабатывает неустановленные или неопределенные переменные, за исключением специальных параметров, таких как подстановочные знаки (*) или «@», как ошибки во время раскрытия параметра.
  • -v:опция -v распечатывает строки ввода оболочки по мере их чтения.
  • -x:опция -x печатает аргументы команды во время выполнения

Выходные значения

Ниже приведены значения выхода оболочки, связанные с командой set:

0: Команда выполнена успешно.

  1. Команда не выполнена из-за неверного аргумента команды
  2. Ошибка команды из-за отсутствия ожидаемого аргумента

Установить команду без каких-либо параметров

Без аргументов команда set выводит список всех переменных оболочки, включая их значения.

$ set

Без аргументов команда set выводит список всех переменных оболочки

Установите позиционные параметры с помощью команды Set

Команду Linux set можно использовать для присвоения значений позиционным параметрам. Позиционный параметр — это переменная в программе оболочки, и на его значение ссылаются как на $ {N}, где N — цифра, обозначающая позицию параметра.

Читайте также:  20 инструментов для разработки Node.js в 2023 году

Значение $ 1 — это первый позиционный параметр после имени файла или команды. Значение $ 2 — это второй параметр и так далее.

Предположим, мы выполняем команду, показанную ниже:

set red blue green

Здесь красный цвет соответствует позиционному параметру $ 1, синий соответствует параметру $ 2 и, наконец, зеленый цвет соответствует параметру $ 3.

Чтобы перечислить все параметры в порядке $ 1 $ 2 $ 3, выполните приведенную ниже команду echo:

echo “$*

Чтобы перечислить первый параметр, выполните:

echo $1

Чтобы вывести второй параметр, запустите:

echo $2

И так далее.

Чтобы вывести второй параметр, запустите

Используйте команду Set, чтобы сбросить все параметры положения

Чтобы отключить позиционные параметры, запустите команду set с двойным дефисом, как показано.

set 

Еще раз, если вы попытаетесь перечислить позиционные параметры, вы получите пустой результат, подразумевая, что они не были установлены.

Еще раз, если вы попытаетесь перечислить позиционные параметры

Игнорировать несвязанную переменную

По умолчанию сценарий оболочки игнорирует неопределенную переменную. В приведенном ниже скрипте myscript.sh переменная $ foo еще не определена и, следовательно, не существует.

По умолчанию сценарий оболочки игнорирует неопределенную переменную

Когда скрипт запускается, он возвращает пустую строку для строки, содержащей несуществующую переменную, и переходит к выполнению следующей строки:

./myscript.sh

Эта аномалия нежелательна, и разработчики хотели бы получать уведомления в случае неопределенных переменных. Директива set -u в начале скрипта выводит ошибку в оболочке, если скрипт запускает неопределенную переменную.

Когда скрипт запускается еще раз, отображается ошибка о несвязанной переменной.

Отображение ошибки, если команда не существует

Обычно, если команда вызывает ошибку и не может быть выполнена, оболочка bash продолжит выполнение оставшихся команд. Возьмем, к примеру, сценарий оболочки ниже:

Команды foobar не существует, и при выполнении сценария в оболочке bash должна отображаться ошибка, чтобы показать, что сценарий вызывает проблему. Однако этого не происходит, и оболочка выполняет следующую строку, как показано:

Как и в предыдущем примере, это не очень хорошая практика при написании сценариев оболочки, особенно для обеспечения безопасности и отладки. В идеале сценарий должен останавливаться при обнаружении ошибки. Для решения этого сценария определите директиву set -e в начале сценария, как показано.

Когда вы снова попытаетесь запустить скрипт, вы столкнетесь с ошибкой, как показано ниже:

Отображение ошибки в командах по конвейеру

Директива set -e не работает при работе с конвейерными командами. Рассмотрим сценарий ниже:

Когда вы запускаете сценарий, он возвращает ошибку, но продолжает выполнять следующую команду:

Чтобы преодолеть это препятствие, передайте директиву set -eo pipefail, как показано:

set -eo pipefail

На этот раз сценарий завершается и не выполняет следующую строку.

Определите параметры Allexport и уведомления

Чтобы установить параметры allexport и notify, выполните команду:

set -o allexport -o notify

Заключение

Это было несколько примеров того, как вы можете использовать команду set в сценариях оболочки. Как уже отмечалось, команда set может быть удобным инструментом для установки позиционных параметров и отладки сценариев оболочки.

Оцените статью
bestprogrammer.ru
Добавить комментарий