Как передать аргумент в сценарии Bash?

How Do I Pass Argument Bash Script



Большинство пользователей Linux Mint 20 застревают при передаче аргумента в сценарии bash. Вы можете передать аргументы любому сценарию bash при его выполнении. Есть несколько простых и полезных способов передачи аргументов в сценарии bash. В этой статье мы расскажем вам о некоторых очень простых способах передачи и использования аргументов в ваших сценариях bash.

Передача аргументов с использованием переменных по умолчанию:

Создайте новый файл с любым именем с помощью сенсорной команды, например, file.sh.







$трогатьимя файла



Откройте этот только что созданный файл и добавьте к нему скрипт bash. Я добавил несколько переменных по умолчанию, например 1, 2 и 3 доллара соответственно. Какие бы аргументы ни передавались через терминал, они будут сохранены в указанных переменных.







Вы должны запустить этот файл, используя команду ./, за которой следует несколько аргументов. Как вы можете видеть на картинке, когда я передал аргументы, возникает ошибка: Permission denied. Это потому, что у этого файла нет прав на выполнение.

$./имя файла аргумент1 аргумент2 аргумент

Итак, чтобы предоставить этому файлу права на выполнение, используйте для этого команду sudo chmod.



$судо chmod+ x имя файла

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

Передача имени сценария оболочки в качестве аргумента:

Теперь используем тот же старый файл file.sh с небольшим изменением его переменных по умолчанию. Вы должны добавить в скрипт переменную $ 0, как показано.

При запуске той же команды сценария ./ shell имя вашего сценария оболочки, например ./filename будет сохранено в переменной $ 0 в качестве аргумента.

Передача аргументов в виде массива переменной:

Начиная с того же файла file.sh, вам нужно добавить несколько дополнительных строк в старый скрипт. Объявите переменную с именем array. Добавьте переменную по умолчанию [защищенная электронная почта], которая будет хранить аргументы, введенные пользователем, в виде массива. Эти аргументы будут преобразованы в массив переменных. В последней строке будут отображаться все аргументы массива переменных, отсортированные по номеру индекса.

Выполните сценарий оболочки ./. Вы увидите, что он отобразит аргументы или значения, хранящиеся в виде массива в [email protected], проанализированные в массив переменных, но не имя сценария оболочки во втором операторе echo. У вас будет следующий результат.

$./имя файла аргумент1 аргумент2 аргумент

Используйте тот же файл с тем же сценарием. Просто удалите $ {array [3]} из последней строки, как показано на рисунке.

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

Вы также можете получить тот же результат, заменив последнюю строку сценария bash одним словом. Вам просто нужно добавить [email protected] в оператор echo, и он отобразит аргументы, присутствующие в этом массиве переменных.

Итак, запустив команду ./ еще раз, вы получите те же результаты.

Проверить общее количество переданных аргументов:

Напротив, если вы хотите узнать общее количество аргументов, переданных пользователем, вы также можете это сделать. Для этого вам просто нужно заменить [email protected] на $ # в echo.

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

Создание построчного вывода аргументов:

Создайте новый файл test.sh в домашнем каталоге. Добавьте сценарий bash, как показано.

Теперь запустите ту же старую команду с другими аргументами. Во-первых, вы увидите ошибку: Permission denied.

Вы должны выполнить команду chmod, чтобы предоставить этому файлу права sudo. После этого снова запустите команду сценария ./ shell. И вы получите построчно отсортированный вывод аргументов.

Ограничьте переменную с помощью номера индекса аргумента:

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

Если аргументы, предоставленные пользователями, меньше номера индекса, указанного в переменной limit, вы получите пустое значение аргумента. В качестве примера я предоставил 4 аргумента, но я указал значение аргумента 05 для отображения. В этой ситуации переменная будет отображаться пустой, потому что пятый аргумент не был передан.

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

Проверка аргументов конкретного значения:

Создайте новый файл с именем Check.sh в своем домашнем каталоге. Добавьте тот же сценарий bash, как показано на изображении ниже. В этом скрипте у нас есть переменная var для хранения значения аргумента, переданного пользователем. Затем у нас есть оператор if, который проверяет, совпадает ли значение аргумента. Если значение аргумента совпадает со значением, указанным в круглых скобках, то будет выполнен первый оператор echo. Если значение не совпадает, будет выполнен второй оператор echo.

Когда мы запускаем команду сценария оболочки, она вызывает ошибку. Используя команду chmod, мы можем исправить эту ошибку.

После этого выполните сценарий оболочки для конкретного файла с некоторым значением аргумента. В нашем случае мы предоставили Aqsa в качестве значения аргумента, которое совпадает со значением, отображаемым в скобках. Таким образом, сценарий bash выполнит первый оператор echo, как показано.

С другой стороны, если вы укажете другие значения аргументов в сценарии оболочки, он отобразит другой оператор echo. Здесь я добавил Rimsha в качестве значения аргумента, которое отличается от значения, указанного в операторе if. Таким образом, сценарий bash выполнит второй оператор echo.

Заключение:

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