English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Shell 함수

linux shell은 사용자 정의 함수를 정의하고 스크립트에서 자유롭게 호출할 수 있습니다.

shell에서 함수 정의 형식은 다음과 같습니다:

[function] funname [()]
{
    action;
    [return int;]
}

설명:

  • 1return 문을 포함할 수 있으며, function fun() 문을 통해 정의할 수도 있으며, parameter를 포함하지 않고 직접 fun()를 정의할 수도 있습니다.

  • 2return 문을 포함하면, return 문을 통해 값을 반환할 수 있으며, return 문을 포함하지 않으면 마지막 명령어의 실행 결과를 반환합니다. return 뒤에 값 n(0-255

아래의 예제는 함수를 정의하고 호출하는 것을 보여줍니다:

#!/bin/bash
# author:기본 튜토리얼 웹
# url:ko.oldtoolbag.com
demoFun() {
    echo "이것은 제 첫 번째 shell 함수입니다!"
}
echo ""-----함수가 시작되었습니다-----"
demoFun
echo ""-----함수가 완료되었습니다-----"

출력 결과:

-----함수가 시작되었습니다-----
이것은 제 첫 번째 shell 함수입니다!
-----함수가 완료되었습니다-----

return 문을 포함한 함수를 정의하겠습니다:

#!/bin/bash
# author:기본 튜토리얼 웹
# url:ko.oldtoolbag.com
funWithReturn() {
    echo "이 함수는 입력된 두 개의 숫자를 더하는 연산을 수행합니다..."
    echo "첫 번째 숫자를 입력하세요: "
    read aNum
    echo "두 번째 숫자를 입력하세요: "
    read anotherNum
    echo "두 개의 숫자는 $aNum 과 $anotherNum!"
    return $(($aNum+$anotherNum))
}
funWithReturn
echo "두 개의 숫자의 합은 $?!"

아래와 같이 출력됩니다:

이 함수는 입력된 두 개의 숫자를 더하는 연산을 수행합니다...
첫 번째 숫자를 입력하세요: 
1
두 번째 숫자를 입력하세요: 
2
두 개의 숫자는 각각 1 와 2 !
두 개의 숫자의 합은 3 !

함수의 반환 값은 함수 호출 후 $?를 통해 얻을 수 있습니다.

주의: 모든 함수는 사용하기 전에 정의되어야 합니다. 이는 함수를 스크립트 시작 부분에 두고, 스크립트가 처음으로 그 함수를 발견할 때까지 사용할 수 있다는 것을 의미합니다. 함수 호출은 단순히 함수 이름만 사용하면 됩니다.

함수 인자

Shell에서 함수를 호출할 때는 인자를 전달할 수 있습니다. 함수 본체 내에서는 $n 형식으로 인자의 값을 얻을 수 있습니다. 예를 들어,$1첫 번째 인자를 나타냅니다,$2두 번째 인자를 나타냅니다...

매개변수를 가진 함수 예제:

#!/bin/bash
# author:기본 튜토리얼 웹
# url:ko.oldtoolbag.com
funWithParam() {
    echo "첫 번째 매개변수는 $"1 !"
    echo "두 번째 매개변수는 $"2 !"
    echo "第十个 매개변수는 $"10 !"
    echo "第十个 매개변수는 ${"10} !"
    echo "第十一个 매개변수는 ${"11} !"
    echo "매개변수 총 개수는 $# 개!"
    echo "모든 매개변수를 문자열로 출력합니다 $"* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73

출력 결과:

첫 번째 매개변수는 1 !
두 번째 매개변수는 2 !
第十个 매개변수는 10 !
第十个 매개변수는 34 !
第十一个 매개변수는 73 !
매개변수 총 개수는 11 !
모든 매개변수를 문자열로 출력합니다 1 2 3 4 5 6 7 8 9 34 73 !

주의하십시오,10 다음은 열쇠가 열리지 않습니다. 열쇠를 열기 위해 ${를 사용하여第十个 매개변수를 가져오는 것이 필요합니다.10}. n>=10일 때, ${n}를 사용하여 매개변수를 가져오는 것이 필요합니다.

또한, 매개변수를 처리하는 데 사용되는 몇 가지 특수 문자가 있습니다:

매개변수 처리 설명
$# 스크립트나 함수에 전달된 매개변수 개수
$* 스크립트에 전달된 모든 매개변수를 하나의 단일 문자열로 표시합니다
$$ 스크립트가 실행하는 현재 프로세스 ID 번호
$! 뒤에 실행된 가장 마지막 프로세스의 ID 번호
$@ 와*동일하지만, 문자열을 쓰고 문자열 내에서 각 매개변수를 반환할 때 사용합니다.
$- Shell이 사용하는 현재 옵션을 표시합니다. set 명령어와 동일한 기능을 합니다.
$? 최근 명령어의 종료 상태를 표시합니다. 0은 오류가 없음을 의미하며, 다른 모든 값은 오류를 의미합니다.