Как создать функцию в сценарии оболочки, которая получает параметры?

#linux #bash #function #shell

#linux #bash #функция #оболочка

Вопрос:

Я работаю над сценарием оболочки, и у меня есть несколько строк кода, которые дублируются (скажем, скопированы).

Я хочу, чтобы эти строки были в функции. Какой правильный синтаксис использовать?

И какие изменения я должен сделать, чтобы эти функции получали параметры?

Вот пример.

Мне нужно включить это:

 amount=1
echo "The value is $amount"
amount=2
echo "The value is $amount"
  

Во что-то вроде этого:

 function display_value($amount) {
    echo "The value is $amount"
}

amount=1
display_value($amount)
amount=2
display_value($amount)
  

Это всего лишь пример, но я думаю, что он достаточно понятен.

Заранее спасибо.

Ответ №1:

 function display_value() {
    echo "The value is $1"
}

amount=1
display_value $amount
amount=2
display_value $amount
  

Ответ №2:

В сценарии оболочки функции могут принимать любое количество входных параметров. $ 1 означает 1-й входной параметр, $ 2 — второй и так далее. $# возвращает количество параметров, полученных функцией, а $@ возвращает все параметры по порядку и через пробелы.

Например:

   #!/bin/sh
  function a() {
   echo $1
   echo $2
   echo $3
   echo $#
   echo $@
  }

  a "m" "j" "k"
  

вернет

 m
j
k
3
m j k