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등등하지만, 함수의 로컬 컨텍스트에서. 아시다시피, 함수는 적절한 언어로 작동합니다.



답변

인수가있는 함수를 호출하려면

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


답변

기본 스크립트에서 $ 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


답변