Функция – это неотъемлемая часть любого языка программирования, содержащего блок кода. Один и тот же код может выполняться несколько раз, вызывая функцию, и необходимости многократно писать один и тот же код можно избежать, используя функцию. Функция может быть определена без аргумента и с аргументом. Аргумент функции может быть обязательным и необязательным. Значение по умолчанию может быть установлено для аргумента функции bash. В этой статье показаны способы объявления необязательного аргумента и использования значений по умолчанию в функции bash.
В этом примере показан способ определения необязательных аргументов со значениями по умолчанию. Создайте файл 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).
Создайте файл 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
Создайте файл 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
Вывод:
Использование необязательных аргументов со значениями по умолчанию в функции было описано в этой статье на трех различных примерах. Значение по умолчанию может быть числовым или строковым. Цель использования необязательного аргумента со значениями по умолчанию в функции будет очищена для пользователя bash после прочтения этого руководства.