Параметры командной строки Linux bash

Обновлено: 21.11.2024

Цель этого руководства — показать, как распечатать все аргументы, отправленные из командной строки в сценарии Bash в Linux. Для этого есть несколько разных способов, как вы увидите в примерах ниже.

В этом уроке вы узнаете:

  • Как распечатать все аргументы, представленные в командной строке из сценария bash

Bash печатает все аргументы


Есть несколько способов вывода аргументов bash из скрипта. Попробуйте несколько скриптов ниже, чтобы назвать лишь несколько.

  1. В этом первом примере скрипта вы просто печатаете все аргументы:
  2. Если вы собираетесь что-то делать со своими аргументами в скрипте, вы можете попробовать что-нибудь простое, например следующий скрипт:
  3. Далее у нас есть скрипт, который делает то же самое, что и предыдущий скрипт bash, но использует другой подход:
  4. Давайте напечатаем все аргументы bash, используя shift:
  5. Или мы можем сделать что-то неясное, например, чтобы вывести все аргументы bash:

Заключительные мысли

В этом руководстве мы рассмотрели несколько различных способов печати всех аргументов, переданных сценарию Bash в командной строке. Как и в большинстве случаев в Linux, всегда есть несколько способов выполнить задачу. Не стесняйтесь использовать любой метод, который лучше всего подходит для вашей ситуации.

Связанные руководства по Linux:

Комментарии и обсуждения

НОВОСТНАЯ БЮЛЛЕТЕНЬ

Подпишитесь на новостную рассылку о карьере в Linux, чтобы получать последние новости, информацию о вакансиях, советы по карьере и рекомендации по настройке.

НАПИСАТЬ НАМ

LinuxConfig ищет технических писателей, специализирующихся на технологиях GNU/Linux и FLOSS. В ваших статьях будут представлены различные руководства по настройке GNU/Linux и технологии FLOSS, используемые в сочетании с операционной системой GNU/Linux.

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

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

Использование переменных-аргументов:

Переменная аргумента начинается с $0. Имя основного файла сценария хранится в переменной $0, которая получает значения аргументов из аргументов командной строки. Если в командной строке переданы два аргумента, то последовательно значения аргументов будут получены в переменных $1 и $2.

Пример -1: Отправка трех числовых значений в аргументах командной строки

Создайте файл bash со следующим скриптом. Скрипт будет получать значения с тремя аргументами и сохранять их в переменных $1, $2 и $3. Он будет подсчитывать общее количество аргументов и печатать значения аргументов, используя цикл без цикла. Сумма всех значений аргументов будет напечатана позже.

Следующий вывод появится после выполнения файла скрипта с тремя числовыми значениями аргумента: 50, 35 и 15.

Пример 2: использование имени файла в качестве аргумента

Создайте файл bash со следующим скриптом, чтобы подсчитать общее количество символов в любом файле. Здесь имя файла будет передано в качестве аргумента командной строки.

Запустите сценарий bash с именем файла в качестве единственного значения аргумента и запустите другую команду, чтобы проверить общее количество символов в этом файле. Здесь в качестве значения аргумента используется файл weekday.txt. Общее количество символов в файле weekday.txt – 57.

Использование функции getopts:

Если вы хотите сохранить данные в базе данных или любом файле или создать отчет в определенном формате на основе значений аргументов командной строки, функция getopts — лучший вариант для выполнения этой задачи. Это встроенная функция Linux. Таким образом, вы можете легко использовать эту функцию в своем скрипте для чтения отформатированных данных из командной строки.

Пример -3: Чтение аргументов функцией getopts

Создайте файл bash со следующим сценарием, чтобы понять, как использовать функцию getopts. Функция getopts используется с циклом while для чтения параметров и значений аргументов командной строки. Здесь используются 4 варианта: «i», «n», «m» и «e». оператор case используется для сопоставления конкретной опции и сохранения значения аргумента в переменной. Наконец, напечатайте значения переменной.

Запустите файл со следующими параметрами и значениями аргументов.Здесь p100 — значение параметра -i, «Горячий пирог» — значение параметра -n, «01-01-2021» — значение параметра -m, а «06-01-2021» — значение параметра - е вариант.

Когда вам нужно отправить простые значения в скрипте, лучше использовать переменные-аргументы. Но если вы хотите отправлять данные в отформатированном виде, лучше использовать функцию getopts для получения значений аргументов. Использование переменных-аргументов и опций getopts показано в следующем примере.

Пример 4: Чтение обычных аргументов и аргументов с параметрами getopts

Способы чтения аргументов командной строки с использованием переменных аргументов и параметров getopts были показаны отдельно в предыдущих примерах этого руководства. Но эти два способа можно использовать в одном скрипте для чтения значений аргументов командной строки. Создайте сценарий bash со следующим кодом для чтения значений аргументов командной строки, переданных опциями getopts и параметрами аргументов. Здесь используются три параметра getopts для чтения имени хоста, имени пользователя и пароля командной строки. Затем команда shift использовалась для удаления всех параметров getopts из команды для чтения значений командной строки с использованием переменных-аргументов. Этот скрипт прочитает и напечатает не более трех значений переменных-аргументов. Если после выполнения кода не будет передано значение аргумента без опции, то будет напечатано сообщение; в противном случае будут напечатаны значения переменной-аргумента.

Следующий вывод появится, если во время выполнения кода указана неправильная опция. Здесь опция -a не существует в скрипте.

Появится следующий вывод, если допустимые параметры со значениями указаны в командной строке во время выполнения кода.

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

Использование ‘[email protected]’ для чтения аргументов командной строки:

Аргументы командной строки можно прочитать без использования переменных аргументов или параметров getopts. Использование «[email protected]» с первой скобкой — это еще один способ прочитать все значения аргументов командной строки.

Пример 5: Чтение значений аргументов командной строки без переменных

Создайте файл bash со следующим сценарием, чтобы считать значения аргументов без каких-либо переменных аргументов и вычислить сумму трех значений аргументов командной строки. «[email protected]» используется здесь с первыми квадратными скобками для чтения всех значений аргументов в массив. Далее будет напечатана сумма первых трех значений массива.

После выполнения приведенного выше сценария для значений аргументов 12, 20 и 90 появится следующий вывод. Сумма этих чисел равна 122.

Вывод:

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

Об авторе

Фахмида Есмин

Я веду курсы веб-программирования. Мне нравится писать статьи или учебные пособия на различные темы в области ИТ. У меня есть канал на YouTube, на котором публикуются различные учебные пособия по Ubuntu, Windows, Word, Excel, WordPress, Magento, Laravel и т. д.: Справка Tutorials4u.

Команды терминала обычно имеют параметры или переключатели, которые можно использовать для изменения того, как команда выполняет то, что она делает. Параметры включены в спецификацию POSIX для интерфейсов командной строки. Это также проверенное временем соглашение, установленное с самыми ранними приложениями UNIX, поэтому полезно знать, как включать их в сценарии Bash при создании собственных команд.

Программирование и разработка

Как и в большинстве языков, в Bash есть несколько способов решить проблему парсинга параметров.По сей день моим любимым методом остается тот, который я изучил из скриптов сборки Slackware Патрика Волкердинга, который послужил моим введением в сценарии оболочки, когда я впервые открыл для себя Linux и осмелился исследовать простые текстовые файлы, поставляемые с ОС.

Разбор параметров в Bash

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

Начните с простого логического параметра (иногда называемого переключателем или флагом):

В этом коде я создаю цикл while, который служит бесконечным циклом до тех пор, пока не останется аргументов для обработки. Оператор if пытается сопоставить любой аргумент, найденный в первой позиции ($1), либо с --alpha, либо с -a. (Это произвольные имена параметров, не имеющие особого значения. В реальном скрипте вы можете использовать --verbose и -v для запуска подробного вывода).

Ключевое слово shift вызывает сдвиг всех аргументов на 1, так что аргумент в позиции 2 ( $2 ) перемещается в позицию 1 ( $1 ). Оператор else запускается, когда больше нет аргументов для обработки, что прерывает цикл while.

В конце сценария значение $ALPHA выводится на терминал.

Протестируйте скрипт:

Опция определена правильно.

Обнаружение аргументов в Bash

Однако есть проблема: дополнительные аргументы игнорируются.

Чтобы перехватить аргументы, которые не предназначены для использования в качестве параметров, вы можете сбросить оставшиеся аргументы в массив Bash.

Протестируйте новую версию скрипта:

Параметры с аргументами

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

Чтобы реализовать это в Bash, вы можете использовать ключевое слово shift, как и с логическими переключателями, но сдвинув аргументы на 2 вместо 1.

В этом коде я добавляю предложение elif для сравнения каждого аргумента как с --config, так и с -c . В случае совпадения значение переменной CONFIG устанавливается равным значению второго аргумента (это означает, что параметру --config требуется аргумент). Все аргументы сдвигаются на 2 места: 1 для смещения --config или -c и 1 для перемещения его аргумента. Как обычно, цикл повторяется до тех пор, пока не останется совпадающих аргументов.

Вот тест новой версии скрипта:

Синтаксический анализ параметров стал проще

Есть и другие способы разбора параметров в Bash. Вы также можете использовать оператор case или команду getopt. Независимо от того, что вы решите использовать, параметры для ваших пользователей являются важными функциями для любого приложения, и Bash упрощает их.

Анализ файлов конфигурации с помощью Bash

Отделение файлов конфигурации от кода позволяет любому изменять свои конфигурации без каких-либо специальных навыков программирования.

7 руководств по Bash, которые помогут улучшить ваши навыки работы с командной строкой в ​​2021 году

Bash — это оболочка командной строки по умолчанию в большинстве систем Linux. Так почему бы не узнать, как извлечь из этого максимальную пользу?

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

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

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

Для передачи данных в сценарий оболочки следует использовать параметры командной строки.

Здесь мы отправляем скрипту два параметра (3 и 5). Так как же прочитать эти параметры в нашем bash-скрипте?

Оглавление

Чтение параметров

Оболочка предоставляет несколько простых в использовании переменных для обработки входных параметров:

  • $0 – это имя скрипта.
  • $1 – первый параметр.
  • $2 — второй параметр.

Оболочка может прочитать 9-й параметр, равный $9.

Давайте посмотрим на эти переменные в действии:

Проверьте результаты следующей команды:

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

Параметры не ограничены числами; это могут быть такие строки:

И результат соответствует ожиданиям.

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

Если для вашего скрипта требуется более девяти параметров, вы должны использовать фигурные скобки, подобные этой $.

Проверить параметры

Если вы не передадите параметры, а ваш код ожидает их, ваш скрипт завершится с ошибкой.

Вот почему мы должны использовать оператор if в Linux, чтобы убедиться, что они существуют.

Параметры подсчета

Насколько хороши сценарии bash для Linux? Эта переменная также предоставляет гиковский способ получить последний параметр. Посмотрите на этот трюк:

Перебрать параметры

Переменная $* содержит все параметры как одно значение.

Переменная [email protected] содержит все параметры как отдельные значения, чтобы вы могли перебирать их.

В этом коде показано, как их использовать:

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

Проверьте результат, чтобы увидеть разницу:

Результат очевиден. Вы можете использовать любой метод в соответствии с вашими потребностями.

Сдвиг переменной параметра

Команда shift перемещает каждую переменную параметра влево:

переменная $3 ==> переменная $2.

переменная $2 ==> переменная $1.

переменная $1 ==> удалена.

переменная $0 ==> (имя скрипта) как есть.

Вы можете использовать команду shift для перебора параметров следующим образом:

Здесь у нас есть цикл while, проверяющий длину $1. Если $1 становится нулем, цикл останавливается. А команда shift сдвигает все переданные параметры влево.

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

Параметры сценария Bash

Опции — это отдельные буквы с тире перед ними.

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

Отдельные параметры от параметров

Иногда вам нужно использовать опции и параметры в одном скрипте. Вы должны разделить их. Делая это, вы сообщаете bash, где находятся параметры и где находятся опции.

Мы используем двойное тире (–) в конце списка параметров. После того, как оболочка увидит двойное тире, она обрабатывает оставшиеся входные данные как параметры, а не как опции.

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

Параметры обработки со значениями

Когда вы углубляетесь в сценарии bash для Linux, иногда вам нужны опции с дополнительными значениями параметров, например:

Должен быть способ определить любой дополнительный параметр для параметров и иметь возможность его обработки.

И если мы запустим его со следующими параметрами:

Из результатов видно, что мы получаем параметр для опции -b, используя переменную $2.

Стандартные варианты

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

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

А вот список общих опций:

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

Получение пользовательского ввода с помощью команды чтения

Иногда вам нужны данные от пользователя во время выполнения сценария bash.

Оболочка bash использует для этой цели команду чтения.

Команда чтения считывает ввод из стандартного ввода (клавиатуры) или дескриптора файла и сохраняет его в переменной:

Мы используем параметр -n, чтобы отключить новую строку, чтобы вы могли вводить текст в той же строке.

Вы можете указать несколько входных данных следующим образом:

Если вы не укажете переменные для команды чтения, все входящие данные будут сохранены в переменной REPLY.

Вы можете использовать параметр -t, чтобы указать время ожидания ввода в секундах.

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

Чтение пароля

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

Опция -s подавляет вывод вывода на экран.

Чтение файлов

Команда чтения может читать файлы по одной строке при каждом вызове.

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

Или мы можем сделать это проще, перенаправив содержимое файла в цикл while следующим образом:

Мы просто передаем содержимое файла в цикл while, перебираем каждую строку и печатаем номер строки и содержимое, и каждый раз, когда вы увеличиваете количество на единицу.

Читайте также:

-aСписок всех элементов.
-cПолучить количество элементов.
-dВыходной каталог.
-eРазвернуть элементы.
-fУказать файл.
-hПоказать страницу справки.
-iКому игнорировать регистр символов.
-lЧтобы перечислить текст.
-nОтветить на вопрос.
-oОтправить вывод в файл или около того.
-qМолчать; не спрашивайте пользователя.
-rДля рекурсивной обработки чего-либо.
- sСкрытый режим.
-vПодробный режим.
-xУказать исполняемый файл.
-yСказать «да» без запроса пользователя.