bash 스크립트에서 함수에 매개변수를 전달하는 방법은 무엇입니까?

bash 스크립트에서 함수에 매개변수를 전달하는 방법은 무엇입니까?

다양한 변수가 있는 스크립트에서 호출할 수 있는 함수를 작성하고 싶습니다. 어떤 이유로 나는 이 일을 하는 데 많은 어려움을 겪고 있습니다. 내가 읽은 예제에서는 항상 전역 변수만 사용하지만, 내가 아는 한 이것이 내 코드를 더 읽기 쉽게 만들지는 않습니다.

사용 목적의 예:

#!/bin/bash
#myscript.sh
var1=$1
var2=$2
var3=$3
var4=$4

add(){
result=$para1 + $para2
}

add $var1 $var2
add $var3 $var4
# end of the script

./myscript.sh 1 2 3 4

$1함수 내에서 및 등을 사용해 보았지만 전체 스크립트에 대해 전역 함수를 호출합니다. 기본적으로 나는 등과 $1같은 것을 찾고 있지만 $2함수의 로컬 컨텍스트에서 찾고 있습니다. 아시다시피 함수는 어떤 적절한 언어에서도 작동할 수 있습니다.

답변1

매개변수를 사용하여 함수를 호출하려면 다음 안내를 따르세요.

function_name "$arg1" "$arg2"

함수는 전달된 인수를 이름이 아닌 위치(예: $1, $2 등)로 참조합니다. $0은 스크립트 자체의 이름입니다.

예:

#!/bin/bash

add() {
    result=$(($1 + $2))
    echo "Result is: $result"
}

add 1 2

산출

./script.sh
 Result is: 3

답변2

메인 스크립트에서 $1, $2는 이미 알고 있는 변수를 나타냅니다. 아래 첨자 또는 함수 내에서 $1 및 $2는 해당 아래 첨자의 내부(로컬) 변수로 함수에 전달된 인수를 나타냅니다.

#!/bin/bash
#myscript.sh
var1=$1
var2=$2
var3=$3
var4=$4

add(){
  #Note the $1 and $2 variables here are not the same of the
  #main script... 
  echo "The first argument to this function is $1"
  echo "The second argument to this function is $2"
  result=$(($1+$2))
  echo $result

}

add $var1 $var2
add $var3 $var4
# end of the script


./myscript.sh 1 2 3 4

관련 정보