Как проверить количество аргументов в Bash

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

В такой ситуации должен существовать способ, с помощью которого можно проверить общее количество аргументов, переданных любому конкретному скрипту Bash. Для этого в Bash есть специальная переменная, т.е. $#. Чтобы понять, как работает эта специальная переменная, вам придется просмотреть все примеры, приведенные в этой статье.

Метод проверки количества аргументов в Bash:

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

Пример # 1: Вывод общего количества аргументов в Bash

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

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

Для тестирования этого скрипта мы выполнили его с тремя аргументами или параметрами следующим образом:

Здесь arguments.sh - это имя файла нашего сценария Bash, а 1, 2 и 3 - это аргументы, которые мы передали этому сценарию Bash. Это означает, что общее количество аргументов в этом тестовом примере равно "3". Давайте попробуем выяснить, правильно ли этот Bash-скрипт отобразил общее количество аргументов или нет.

Когда мы выполним этот Bash-скрипт, он отобразит общее количество переданных ему аргументов, что видно из приведенного ниже изображения:

Вывод общего количества аргументов в Bash

Пример № 2: Вывод общего количества аргументов вместе со значениями аргументов с позиционными параметрами в Bash

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

В этом сценарии Bash мы сначала вывели значения трех позиционных параметров. Это означает, что все аргументы, которые будут переданы этому сценарию Bash с терминала, будут сохранены в этих трех позиционных параметрах. После этого мы просто вывели значение специальной переменной $#.

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

Вывод общего количества аргументов вместе со значениями аргументов

Пример № 3: Вывод общего количества аргументов и их значений с помощью специальной переменной $@ в Bash

Цель этого примера та же, что и во втором примере, однако в этом примере мы будем использовать другую специальную переменную, т.е. $@, для печати значений переданных аргументов. В принципе, специальная переменная $@ может хранить все аргументы, которые передаются в сценарий Bash. Чтобы понять это, вы можете взглянуть на следующий сценарий Bash:

В этом сценарии Bash мы просто вывели на терминал значение специальной переменной $@, то есть все переданные аргументы, и значение специальной переменной $#, то есть общее количество переданных аргументов.

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

Вывод общего количества аргументов и их значений

Пример № 4: Печать общего количества аргументов вместе со значениями аргументов с помощью специальной переменной $* в Bash

Это еще одна модифицированная версия нашего второго примера, поскольку в этом примере мы будем использовать специальную переменную $* для печати значений переданных аргументов на терминале. Как и специальная переменная $@, специальная переменная $* может хранить значения всех переданных аргументов для любого конкретного сценария Bash. Модифицированный сценарий Bash показан ниже:

В этом Bash-скрипте мы просто вывели на терминал значение специальной переменной $*, то есть все переданные аргументы, и значение специальной переменной $#, то есть общее количество переданных аргументов.

Для проверки этого Bash-скрипта и визуализации его результатов мы выполнили его с теми же параметрами, что и в первых трех примерах. На этот раз при выполнении нашего Bash-скрипта вывод был таким же, как и во втором и третьем примерах, что видно из следующего изображения:

Печать общего количества аргументов вместе со значениями аргументов

Пример № 5: Ограничение общего количества аргументов в Bash

Наконец, специальная переменная $# также может быть использована для ограничения общего количества аргументов, передаваемых сценарию Bash. Чтобы понять это явление, вам придется просмотреть сценарий Bash, показанный ниже:

В этом Bash-скрипте у нас есть оператор "if", который применяется к специальной переменной $#. Мы хотели ограничить количество аргументов до "3". Если аргументов будет меньше, чем "3", на терминале будет выведено сообщение об ошибке. Аналогично, если аргументов будет больше, чем "3", на терминал будет выведено сообщение об ошибке. Однако если предоставленные аргументы будут равны только "3", то на терминал будут выведены значения этих аргументов.

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

После этого мы выполнили этот сценарий Bash с четырьмя аргументами, из-за чего на терминал было выведено сообщение об ошибке, как показано на рисунке ниже:

Ограничение общего количества аргументов

Заключение

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

Понравилась статья? Поделиться с друзьями:
Добавить комментарий