В Linux мы используем аргументы командной строки в качестве входных данных для сценария bash. Bash может последовательно принимать эти аргументы командной строки и анализировать их как опцию. Эти аргументы позволяют вам динамически влиять на действия и выходные данные скрипта.
Вы можете настроить эти аргументы по-разному, чтобы повлиять на ввод и вывод. Вот почему обработка аргументов командной строки в bash важна, но многим новым пользователям нужно научиться это делать. Итак, в этом руководстве мы объясним различные способы обработки аргументов командной строки в bash.
Как обрабатывать аргументы командной строки в Bash?
Существуют различные способы обработки аргументов командной строки в Bash, поэтому давайте рассмотрим их, чтобы получить краткую информацию:
Функция getopt
Функция getopt удобна тем, что предоставляет параметры и синтаксис для определения и разбора аргументов в bash. Это встроенная функция Linux, которую вы можете использовать при создании файла базы данных или отчета в определенном формате на основе аргументов. Функция getopt помогает анализировать короткие аргументы командной строки, поскольку существует два типа аргументов:
- Короткие аргументы: Это односимвольные аргументы, за которыми следует дефис. Например, -a, -l, -h и т. д. — это несколько примеров одиночных аргументов.
- Длинные аргументы: Это многосимвольные аргументы, за которыми следует двойной дефис. Существуют различные примеры длинных аргументов, такие как –all, –list, –help и т. д.
Давайте возьмем пример, в котором мы будем обрабатывать аргументы командной строки с помощью утилиты getopt. Мы создали сценарий bash с именем «getopt.sh», который содержит следующую информацию:
!/ мусорное ведро / бить
пока получить 'А:Б:С:Д:' Детали; делать
кейс ' $детали ' в
А )
эхо 'Имя гражданина $OPTARG ' ;;
Б )
эхо «Удостоверение личности гражданина $OPTARG ' ;;
С )
эхо «Место рождения $OPTARG ' ;;
Д )
эхо «Профессия $OPTARG ' ;;
* )
выход 1 ;;
эсак
Выполнено
сдвиг ' $(($ОПТИНГ -1) )'
если [ ! -С 1 доллар ] ; тогда
эхо 'Семейное положение $1'
еще
эхо «Нет записей»
выход 1
быть
если [ ! -С 2 доллара ] ; тогда
эхо «Члены семьи 2 доллара»
быть
Теперь запустим скрипт с нужными аргументами на входе:
Как вы можете видеть на изображении выше, мы запускаем скрипт только с функциями getopt, а затем добавляем обычные аргументы, чтобы получить полный результат.
Использование флагов
Флаги — это не что иное, как одиночные символы, которым предшествует дефис (-). Когда мы передаем аргументы с помощью функции getopt, мы используем флаги. -a, -b, -c — некоторые примеры флагов. Например, для сценария требуется имя гражданина, его удостоверение личности, место, возраст и род занятий. Следовательно, мы использовали флаги j, k, l, m, n, чтобы одновременно определить имя гражданина, ID, место, возраст и род занятий:
#!/бин/башПока получить j:k:l:m:n: flag_info
делать
кейс ' ${флаг_информация} ' в
< ол >
< что > Дж ) имя гражданина знак равно ${OPTARG} ;; что >
< что > к ) гражданин знак равно ${OPTARG} ;; что >
< что > л ) место знак равно ${OPTARG} ;; что >
< что > м ) возраст знак равно ${OPTARG} ;; что >
< что > н ) оккупация знак равно ${OPTARG} ;; что >
ол >
эсак
Выполнено
эхо 'Вот введенные данные:'
эхо «Имя гражданина: $citizenname ' ;
эхо 'Идентификатор гражданина: $citizenid ' ;
эхо 'Место: $место ' ;
эхо 'Возраст: $возраст ' ;
эхо 'Занятие: $оккупация ' ;
Скрипт выдаст в терминале следующий результат:
. /< сценарий > .ш -j Дэнни -к 476 -л Торонто -м 25 -н Автор
С использованием [электронная почта защищена] С петлями
“ [электронная почта защищена] ” представляет собой не что иное, как массив всех входных аргументов. Мы можем передать любое количество входных данных, используя « [электронная почта защищена] ' переменная. Вы можете использовать эту переменную как цикл для перебора аргументов. “ [электронная почта защищена] тогда пригодится переменная »; вы не знаете размер входных данных и не можете принимать позиционные аргументы. Следовательно, вы можете использовать « [электронная почта защищена] », а не определять функцию getopt снова и снова. Вот пример использования циклов и [электронная почта защищена] вместе в сценарии:
#!/бин/башна одном знак равно ( “$ @ ” )
если [ $# -gt 1 ]
тогда
добавлять =$ ( ( ${число[0]} + ${число[1]} ) )
эхо «Сложение всех чисел равно: $ добавить '
вычитание =$ ( ( ${число[0]} - ${число[1]} - ${число[2]} ) )
эхо «Вычитание чисел это: $ вычитание '
умножить =$ ( ( ${число[0]} * ${число[1]} * ${число[2]} ) )
эхо «Умножение чисел это: $ умножить '
дивизион1 =$ ( ( ${число[0]} / ${число[1]} ) )
эхо «Отделение ${число[0]} а также ${число[1]} является: $дивизия1 '
дивизион2 =$ ( ( ${число[1]} / ${число[2]} ) )
эхо 'Отдел ${число[1]} а также ${число[2]} является: $дивизия2 '
дивизион3 =$ ( ( ${число[0]} / ${число[2]} ) )
эхо 'Отдел ${число[0]} а также ${число[2]} является: $дивизия2 '
быть
Приведенный выше сценарий выполняет различные арифметические вычисления на основе аргументов командной строки. Например, мы ввели 50, 35 и 15 в качестве входных данных:
Использование позиционных параметров
Вы можете получить доступ к позиционным параметрам, поскольку они сначала обращаются к $1, затем к $2 и так далее. Например, давайте создадим скрипт, который считывает имя в качестве первого аргумента, а затем город в качестве второго. Однако, если вы сначала передаете город, а затем название, то оно считает название городом и наоборот. Давайте углубимся в следующий сценарий, чтобы понять эту концепцию:
#!/бин/башэхо 'Вот введенные данные'
эхо 'имя $1'
эхо 'город $2'
Добавить название и город нужно в момент выполнения скрипта в терминале:
Подведение итогов
Это все, что вам нужно знать о методах обработки аргументов командной строки в bash. Мы объяснили различные подходы, которые вы можете попробовать, на соответствующих примерах. Существуют различные команды, если вы хотите добавить аргументы в сценарий. Поэтому обязательно посетите Linuxhint, чтобы узнать о них больше.