Важно подсчитать общее количество аргументов, которые передаются сценарию для различных целей, таких как обработка ошибок, предоставление сообщений на основе количества аргументов и помощь пользователю в передаче правильного количества аргументов. Общее количество аргументов можно подсчитать в Bash двумя способами. В одном используется «$#», а в другом — цикл. В этой статье показаны методы проверки количества аргументов и использования этого значения для различных целей.
Использование проверки количества аргументов показано в этой части статьи на нескольких примерах.
Создайте файл Bash со следующим сценарием, который подсчитывает общее количество аргументов и печатает значения аргументов, используя цикл for.
#!/bin/bash #Сохраните количество аргументов len=$# echo "Общее количество аргументов: $len" echo "Значениями аргументов являются:" #Выведите значения аргументов for val in $@ do echo $val done
Следующий вывод появляется после выполнения скрипта со значениями аргументов 67, 34 и 12:
andreyex@andreyex:-$ bash checkarg1.bash 67 34 12 Общее количество аргументов: 3 Значениями аргументов являются: 57 34 12 andreyex@andreyex: -$
Создайте файл Bash со следующим сценарием, который подсчитывает общее количество аргументов и печатает значения аргументов в зависимости от количества аргументов. Сообщение об ошибке печатается, если сценарию не передается аргумент.
#!/bin/bash #Сохраните количество аргументов len=$# #Проверьте общее количество аргументов if [ $len -eq 0 ]; then echo "Нет никаких аргументов" fi #инициализируйте счетчик counter=0 #Вывести значение аргумента на основе значения счетчика while (( $counter < $len )) do if [ $counter -lt 1 ]; then echo $1 elif [ $counter -lt 2 ]; then echo $2 elif [ $counter -lt 3 ]; then echo $3 fi ((counter++)) done
Сценарий выполняется четыре раза на выходе. Сообщение об ошибке выводится, если аргумент не указан. Значения аргументов печатаются, когда заданы одно, два и три значения аргумента.
andreyex@andreyex: -$ bash checkarg2.bash Нет никаких аргументов fahmide@andreyex:-$ bash checkarg2.bash 50 50 andreyex@andreyex: $ bash checkarg2.bash 50 30 50 30 andreyex@andreyex:-$ bash checkarg2.bash 50 30 90 50 30 90 andreyex@andreyex: -$
Создайте файл Bash со следующим сценарием, который подсчитывает общее количество аргументов и печатает среднее значение пяти значений аргументов. Команда bc используется в скрипте для вычисления среднего значения. Сообщение об ошибке печатается, если сценарию не передается аргумент.
#!/bin/bash #Проверьте общее количество аргументов if [ $# -eq 5 ]; then #Вычислите сумму значений аргумента sum=$(($1+$2+$3+$4+$5)) #Вычислите средние значения avg=$(($sum/5 | bc -l)) #Выведите средние значения и значения аргументов echo "Значения аргументов являются: $1 $2 $3 $4 $5" echo "Среднее значение: $avg" else #Сообщение об ошибке печати echo "Общее количество аргументов должно быть равно 5." fi
Сценарий выполняется дважды на выходе. Сообщение об ошибке выводится, если аргумент не указан. Среднее значение аргумента печатается, когда задано пять значений аргумента.
andreyex@andreyex: $ bash checkarg3.bash Общее количество аргументов должно быть равно 5. andreyex@andreyex: -$ bash checkarg3.bash 45 23 89 67 12 Значения аргументов являются: 45 23 89 67 12 Среднее значение: 47 andreyex@andreyex:-$
Создайте файл Bash со следующим сценарием, который печатает любое из трех сообщений на основе условия «else». Первое условие «else» проверяет, равно ли число аргументов 2 или нет. Второе условие «else» проверяет, меньше ли длина значения аргумента 5 или нет. Третье условие «если» проверяет, является ли второй аргумент положительным или нет.
#!/bin/bash #Считайте значения аргументов name=$1 price=$2 #Count the length of the second argument len=${#name} #Проверьте общее количество аргументов if [ $# -ne 2 ]; then echo "Общее количество аргументов должно быть равно 2." exit #Проверьте длину первого аргумента elif [ $len -lt 5 ]; then echo "Название продукта должно содержать не менее 5 символов." exit #Проверьте значение второго аргумента elif [ $2 -lt 0 ]; then echo "Значение цены должно быть положительным." exit fi #Выведите значения аргументов echo "Цена $name - это TK. $price"
Сценарий выполняется четыре раза на выходе. Сообщение об ошибке «Общее количество аргументов должно быть равно 2» выводится, если аргумент не указан. Сообщение об ошибке «Название продукта должно содержать не менее 5 символов» выводится, когда длина первого аргумента меньше пяти. Сообщение об ошибке «Значение цены должно быть положительным» печатается, когда второй аргумент отрицательный.
andreyex@andreyex:-$ bash checkarg4.bash Общее количество аргументов должно быть равно 2. andreyex@andreyex:-$ bash checkarg4.bash pen 45 Название продукта должно содержать не менее 5 символов. andreyex@andreyex:-$ bash checkarg4.bash pencil -45 Значение цены должно быть положительным. andreyex@andreyex:-$ bash checkarg4.bash pencil 10 Цена карандаша - это TK. 10 andreyex@andreyex:-$
Использование количества аргументов в сценарии Bash для различных целей показано в этом руководстве с использованием нескольких примеров, чтобы помочь новым пользователям Bash.