English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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은 오류가 없음을 의미하며, 다른 모든 값은 오류를 의미합니다. |