다양한 변수가있는 스크립트에서 호출 할 수있는 함수를 작성하고 싶습니다. 어떤 이유로 나는 이것을하는 데 많은 어려움을 겪고 있습니다. 예제 나는 항상 전역 변수를 사용하지만 읽을 수있는 한 코드를 더 읽기 쉽게 만들지는 않습니다.
사용 예 :
#!/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