Как обрабатывать аргументы командной строки в сценарии Bash

How Handle Command Line Arguments Bash Script



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

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

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







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

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



#! / bin / bash

# Подсчет общего количества аргументов
выбросил 'Общее количество аргументов: $ #'

# Чтение значений аргументов индивидуально
выбросил 'Значение первого аргумента: $ 1'
выбросил 'Значение второго аргумента: $ 2'
выбросил 'Значение третьего аргумента: $ 3'

# Чтение значений аргументов с помощью цикла
дляАргвалв '[электронная почта защищена]'
делать
выбросил -n '$ argval'
сделано

# Добавление значений аргументов
сумма= $((1 доллар+2 доллара+3 доллара США))

# распечатать результат
выбросил -А также ' пРезультат суммы =$ сумма'

Запустите файл bash с тремя числовыми значениями аргументов.



$трепатьcmdline1.shпятьдесят 35 год пятнадцать





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

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

#! / bin / bash
имя файлазнак равно1 доллар
totalcharзнак равно``Туалет -c $ filename``
выбросил 'Общее количество символов$ totalchar'

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



$трепатьcmdline2.sh employee.txt
$Туалет -cemployee.txt

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

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

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

Создайте файл bash и добавьте следующий сценарий, чтобы понять использование Getopts функция. Функция getopts используется с циклом while для чтения параметров аргументов командной строки и значений аргументов. Здесь используются 4 варианта: ‘I’, ‘n’, ‘m’ а также 'А также' . Оператор case используется для сопоставления конкретной опции и сохранения значения аргумента в переменной. Наконец, распечатайте значения переменной.

#! / bin / bash
в то время как Getopts ':во мне:'злой;делать
кейс $ arg в
я) Я БЫзнак равно$ OPTARG;;
п) Имязнак равно$ OPTARG;;
м) Дата производствазнак равно$ OPTARG;;
А также) Годен дознак равно$ OPTARG;;
esac
сделано
выбросил -А также ' п$ ID $ Имя $ Manufacturing_date $ Expire_date п'

Запустите файл со следующими параметрами и значениями аргументов. Здесь p100 - это значение опции -i, 'Hot Cake' - значение опции -n, '01 -01-2018 '- значение опции -m, а '06 -01-2018' - значение - е вариант.

$трепатьcmdline3.shp001-n 'Горячий пирог' '01 -01-2018 ' -А также '06 -01-2018 '

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