ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

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

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

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

 

Различные варианты использования проверки количества аргументов

Использование проверки количества аргументов показано в этой части статьи на нескольких примерах.

Пример 1. Подсчет общего количества аргументов с использованием «$#»

Создайте файл 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: -$

 

Пример 2. Печать значений аргумента на основе длины аргумента

Создайте файл 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: -$

 

Пример 3. Вычисление среднего значения аргумента

Создайте файл 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:-$

 

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

Создайте файл 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.

Exit mobile version