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