Как создать функцию в сценарии оболочки, которая получает параметры? - PullRequest
9 голосов
/ 05 октября 2011

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

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

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

Вот пример.

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

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)

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

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

Ответы [ 2 ]

15 голосов
/ 05 октября 2011
function display_value() {
    echo "The value is $1"
}

amount=1
display_value $amount
amount=2
display_value $amount
14 голосов
/ 18 июля 2014

В сценарии оболочки функции могут принимать любое количество входных параметров. $ 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...