Параметры функции Bash: методы и примеры передачи аргументов

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

Метод 1: позиционные параметры
Вы можете получить доступ к параметрам функции, используя позиционные параметры, которые представлены «$1», «$2», «$3» и т. д., где «$1» представляет первый параметр, «$2». ” представляет второй параметр и т. д.

# Example function with positional parameters
greet() {
  echo "Hello, $1! How are you, $2?"
}
# Call the function with parameters
greet "John" "today"

Метод 2: специальные переменные
Bash предоставляет специальные переменные для доступа к параметрам функции. Переменная “$@” представляет все параметры, передаваемые функции как отдельные аргументы.

# Example function using the "$@" special variable
print_args() {
  for arg in "$@"; do
    echo "Argument: $arg"
  done
}
# Call the function with parameters
print_args "apple" "banana" "cherry"

Метод 3: команда Shift
Команда «shift» позволяет смещать позиционные параметры, эффективно отбрасывая первый параметр и делая второй параметр новым «$1», третий параметр — новым «$2» и и так далее.

# Example function using the "shift" command
sum() {
  local total=0
  while (( $# > 0 )); do
    total=$((total + $1))
    shift
  done
  echo "Sum: $total"
}
# Call the function with parameters
sum 1 2 3 4 5

Метод 4: ассоциативные массивы (требуется Bash 4+)
Если вы используете Bash версии 4 или более поздней, вы можете использовать ассоциативные массивы для определения параметров функции. Это позволяет передавать пары ключ-значение в качестве аргументов.

# Example function using associative arrays
process_data() {
  local -A data=$1
  echo "Name: ${data[name]}"
  echo "Age: ${data[age]}"
}
# Call the function with parameters as an associative array
declare -A person=( [name]="John" [age]=30 )
process_data "$person"