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

Использование необязательного аргумента и значения по умолчанию в функции bash

Bash Heredoc

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

 

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

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

#! /bin/bash 

# Объявить функцию с обязательным и необязательным аргументом
functionsum()
{
# Установить значения
num1=${1:-10}
num2=${2:-20}
# Вернуть true, если аргумент не указанif [ $# -lt1 ]; then
echo "Необязательные значения аргументов: $num1, $num2."
# Возвращает истину, если указан один аргумент
elif [ $# -lt2 ]; then
# Добавить новую строку
echo
echo "Необязательное значение аргумента: $ num2."
else
# Добавить новую строку
echo
echo " Нет необязательного аргумента."
num1=$1
num2=$2
fi
# Вычислить сумму двух чисел
sum=$((num1+num2))
echo "Сумма $ num1 и $ num2 равна $ sum"
}
# Вызов функции без аргументов
sum
# Вызов функции с одним аргументом
sum 40
# Вызов функции с двумя аргументами
sum 70 30

 

Вывод:

Когда функция вызывалась без аргументов, сумма двух значений по умолчанию была напечатана равной 30 (10 + 20). Когда функция вызывалась с одним аргументом, выводится сумма значения аргумента (40) и второго значения по умолчанию (20), равного 60. Когда функция вызывается с двумя аргументами, сумма двух значений аргументов выводила 100 (70 + 30).

 

Пример 2: Аутентификация пользователя с помощью значения по умолчанию

Создайте файл bash со следующим сценарием для аутентификации пользователя с именем пользователя и паролем по умолчанию, когда функция вызывается без аргументов. Функция Authenticate() содержит два необязательных аргумента с именем пользователя и паролем по умолчанию. Когда эта функция вызывается без аргументов, для аутентификации пользователя будут использоваться значения по умолчанию, и будет напечатано сообщение об успешном входе в систему. Когда эта функция вызывается с действующим именем пользователя и паролем, будет напечатано сообщение об успешном входе в систему администратора. Когда эта функция вызывается с неверным именем пользователя и паролем, будет напечатано сообщение об ошибке.

#! /bin/bash

# Объявить функцию для аутентификации 
functionAuthenticate() { 
# Установить значения 
username=${1:-guest} password=${2:-12345} 
# Вернуть true, если аргумент не указан
if [[ $username == 'admin'&& $password == 'secret' ]]; then 
echo «Вы вошли в систему как администратор». 
# Возвращает true, если указан один аргумент 
elif [[ $username == 'guest'&& $password == '12345' ]]; then 
echo «Вы вошли в систему как Гость». 
else 
echo «Неверное имя пользователя и пароль». 
fi 
} 
# Функция вызова без аргументов 
Authenticate 
# Функция вызова с действительным именем пользователя и паролем 
Authenticate admin secret 
# Функция вызова с недопустимым именем пользователя и паролем 
Authenticate andreyex 1234

 

Пример 3: Расчет бонуса на основе значения по умолчанию

Создайте файл bash со следующим сценарием для расчета бонуса на основе значения по умолчанию, если для функции не указано значение аргумента. После выполнения сценария у пользователя будут взяты три входных значения. Это базовая зарплата, аренда дома и медицинские пособия. Функция с именем calculate_salary() вычислит сумму бонуса на основе значения аргумента функции или значения по умолчанию. Общая сумма заработной платы будет подсчитана путем сложения значений базовой , арендной , медицинской и бонусной суммы . Функция calculate_salary() была вызвана без аргументов или с аргументом.

#! /bin/bash

# Получите базовое пособие, арендную плату за дом и медицинское пособие сотрудника
echo "Введите базовую зарплату:"
read basic
echo "Введите арендную плату за дом:"
read rent
echo арендной платы "Введите медицинское пособие:"
read medical

#Declare для расчета заработной платы с бонусной
functioncalculate_salary()
{
# Установка значения
bonus=${1:-5}

# Расчет бонуса

bonusAmount=$((basic*bonus/100))

# Расчет общей заработной платы
total=$((basic+rent+medical+bonusAmount))

# Распечатать общую зарплату с суммой бонуса

echo "Общая зарплата с бонусом $bonus % составляет $total"
}

# Функция вызова без процента бонуса
calculate_salary

# Функция вызова с процентным соотношением бонус
calculate_salary 10

 

Вывод:

Когда функция была вызвана без аргументов, для расчета суммы бонуса на основе базовой суммы использовалось значение по умолчанию 5. Когда функция вызывается со значением аргумента 10, сумма бонуса вычисляется на основе этого значения. Затем напечатана общая заработная плата, основанная на 5% бонусе и 10% бонусе.

 

Заключение:

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

Exit mobile version