Site icon 8HOST.COM

Аргументы командной строки в shell-скриптах

В сегодняшней статье мы разберем чтение аргументов командной строки в сценариях оболочки. Shell-скрипты — инструмент, необходимый любому пользователю Linux. Они играют важную роль в автоматизации повседневных задач и создании собственных команд и макросов.

Сценарии оболочки могут получать ввод от пользователя в виде аргументов.

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

Что такое аргумент командной строки?

Аргументы командной строки — это параметры, которые передаются скрипту во время его выполнения в оболочке bash.

В Linux они также известны как позиционные параметры.

Аргументы командной строки используются для обозначения позиции в памяти, где хранится команда и связанные с ней параметры. Понимание аргументов очень важно для тех, кто изучает сценарии командной строки.

В этой статье мы рассмотрим само понятие аргументов командной строки, а также их использование в shell-скриптах.

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

Аргументы командной строки позволяют делать сценарии оболочки интерактивными для пользователей. Кроме того, они помогают скрипту определить данные, с которыми ему нужно работать. Таким образом, аргументы являются неотъемлемой частью любого практического использования shell-скриптов.

В оболочке bash есть специальные переменные, зарезервированные для указания на аргументы, которые мы передаем через shell-скрипт. Bash сохраняет эти переменные в числовом виде ($1, $2, $3, … $n).

Первый аргумент командной строки в shell-скрипте — $1, второй — $2, третий — $3. И так продолжается до 9-го аргумента. В переменной $0 хранится название скрипта или самой команды.

Также существуют специальные символы, которые являются позиционными параметрами, но их функция тесно связана с аргументами командной строки.

Специальный символ $# хранит общее количество аргументов. Подстановочные символы $@ и $* указывают на все аргументы. $$ используется для поиска идентификатора процесса текущего скрипта оболочки, а $? можно использовать для вывода кода завершения сценария.

Чтение аргументов командной строки в shell-скриптах

Теперь вы имеете представление об аргументах командной строки в Linux. Теперь пришло время использовать эти знания на практике. 

В этом туториале применение аргументов командной строки в shell-скрипте мы рассмотрим на примере команды netstat.

Сначала давайте напишем простой сценарий оболочки, чтобы показать работу всех зарезервированных переменных, которые обсуждались ранее. Используйте nano или любой другой редактор для создания файла и скопируйте в него следующий код. Для примера мы планируем использовать вот такой скрипт:

#!/bin/sh
echo "Script Name: $0"
echo "First Parameter of the script is $1"
echo "The second Parameter is $2"
echo "The complete list of arguments is $@"
echo "Total Number of Parameters: $#"
echo "The process ID is $$"
echo "Exit code for the script: $?"

После завершения работы сохраним скрипт под названием PositionalParameters.sh и выйдем из текстового редактора.

Теперь давайте откроем командную строку и запустим сценарий оболочки со следующими аргументами.

./PositionalParameters.sh learning command line arguments

Сценарий запустится с указанными аргументами и будет использовать позиционные параметры для вывода данных. Если вы правильно все выполнили, вы увидите следующее:

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

Процесс был запущен под идентификатором 14974 и завершен с кодом 0.

Подводим итоги

Читать аргументы командной строки в shell-скриптах — важный навык, поскольку он позволяет нам создавать сценарии, которые могут принимать входные данные от пользователя и логическим путем генерировать выход.

С помощью аргументов в скриптах вы можете значительно упростить повторяющиеся задачи, с которыми вам приходится сталкиваться ежедневно, а также создавать собственные команды, экономя при этом время и силы.

Читайте также: Выполнение команд через shell-скрипты в Linux