쉘 기능


Linux 쉘을 사용하면 사용자가 함수를 정의한 다음 쉘 스크립트에서 원하는 대로 호출할 수 있습니다.

셸의 함수 정의 형식은 다음과 같습니다.

[ function ] funname [()]

{

    action;

    [return int;]

}

지침:

  • 1 fun() 함수로 정의하거나 매개변수 없이 fun()으로 직접 정의할 수 있습니다.

  • 2. 매개변수 반환: 표시에 반환을 추가할 수 있습니다. 그렇지 않은 경우 마지막 명령 실행 결과가 반환 값으로 사용됩니다. return 다음에 n(0-255

다음 예제에서는 함수를 정의하고 호출합니다.

#!/bin/bash
# author:php中文网
# url:www.php.cn

demoFun(){
    echo "这是我的第一个 shell 函数!"
}
echo "-----函数开始执行-----"
demoFun
echo "-----函数执行完毕-----"

출력 결과:

-----函数开始执行-----
这是我的第一个 shell 函数!
-----函数执行完毕-----

다음에서는 return 문이 있는 함수를 정의합니다.

#!/bin/bash
# author:php中文网
# url:www.php.cn

funWithReturn(){
    echo "这个函数会对输入的两个数字进行相加运算..."
    echo "输入第一个数字: "
    read aNum
    echo "输入第二个数字: "
    read anotherNum
    echo "两个数字分别为 $aNum 和 $anotherNum !"
    return $(($aNum+$anotherNum))
}
funWithReturn
echo "输入的两个数字之和为 $? !"

출력은 비슷합니다.

这个函数会对输入的两个数字进行相加运算...
输入第一个数字: 
1
输入第二个数字: 
2
两个数字分别为 1 和 2 !
输入的两个数字之和为 3 !

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

참고: 모든 함수는 사용 전에 정의해야 합니다. 즉, 함수는 셸이 시작될 때까지 스크립트 시작 부분에 배치되어야 합니다. 함수 이름을 사용하면 됩니다.


함수 매개변수

쉘에서는 함수 호출 시 매개변수 값을 전달할 수 있습니다. 예를 들어 $n 형식에서 $1은 첫 번째 매개변수를 나타내고 $2는 두 번째 매개변수를 나타냅니다.

매개변수가 있는 함수의 예:

#!/bin/bash
# author:php中文网
# url:www.php.cn

funWithParam(){
    echo "第一个参数为  !"
    echo "第二个参数为  !"
    echo "第十个参数为  !"
    echo "第十个参数为  !"
    echo "第十一个参数为  !"
    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번째 매개변수를 얻을 수 없습니다. 10번째 매개변수인 ${10}을 얻어야 합니다. n>=10인 경우에는 ${n}을 사용하여 매개변수를 가져와야 합니다.

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

매개변수 처리 설명
$# 스크립트에 전달된 매개변수의 수
$* 스크립트에 전달된 모든 매개변수를 단일 문자열로 표시합니다
$$ 실행 중인 스크립트의 현재 프로세스 ID 번호
$! 백그라운드에서 실행 중인 마지막 프로세스의 ID 번호
$@ $*와 동일하지만 따옴표로 사용되며 각 매개변수를 따옴표로 반환합니다.
$- set 명령과 동일한 기능을 가진 쉘에서 사용되는 현재 옵션을 표시합니다.
$? 마지막 명령의 종료 상태를 표시합니다. 0은 오류가 없음을 나타내고, 다른 값은 오류를 나타냅니다.