Shell 프로 그래 밍 함수 에 대해 주의해 야 할 몇 가지

2914 단어 returnshell함수.
오늘 오전 한 친구 가 갑자기 QQ 에 게 셸 프로 그래 밍 의 함수 가 왜 return 이 정수 일 수 밖 에 없 는 지 물 었 다. 어떻게 해 야 함수 의 실행 결 과 를 특정한 변수 에 되 돌려 저장 할 수 있 는 지 물 었 다.사실 이 문 제 는 잘 해결 되 었 다. 셸 함수 만 진지 하 게 이해 하면 된다.다음은 채 팅 기록 에 따라 함수 에 관 한 몇 가지 점 을 정리 한 것 입 니 다.
셸 프로 그래 밍 에서 함수 에 대해 알 아야 할 몇 가지
 1. 함수 내 에서 든 함수 외 에 든 $0 의 값 은 이 스 크 립 트 자체 입 니 다.
    [root@target ~]# cat test.sh
    #!/bin/bash
    
    echo $0
    
    function testFunc(){
        echo "In function:"
        echo "\$0=$0"
        echo "\$1=$1"
    }
    
    testFunc 'test test'
    [root@target ~]# bash test.sh
    test.sh
    In function:
    $0=test.sh
    $1=test test

 2. 함수 내 에서 정 의 된 변수 (전역 변 수 를 수정 해 야 하 는 것 이 아니라면) 는 가능 한 한 local 키 워드 를 사용 하여 국부 변수 로 정의 하여 전역 변수 값 을 덮어 쓰 지 않도록 합 니 다.
    
[root@target ~]# cat local.sh 
    #!/bin/bash
    
    TESTDATA="Hello world."
    TESTDATA1="Hello shell."
    
    function localFunc(){
        TESTDATA="Hello python."
        local TESTDATA1="Hello PHP."
        echo "In function:"
        echo "\$TESTDATA=$TESTDATA"
        echo "\$TESTDATA1=$TESTDATA1"
    }
    
    #call function
    localFunc
    
    echo "Out of function:"
    echo "\$TESTDATA=$TESTDATA"
    echo "\$TESTDATA1=$TESTDATA1"
    [root@target ~]# bash local.sh 
    In function:
    $TESTDATA=Hello python.
    $TESTDATA1=Hello PHP.
    Out of function:
    $TESTDATA=Hello python.
    $TESTDATA1=Hello shell.

 3. 함수 에서 return 키 워드 를 사용 하여 0 - 255 의 값 을 되 돌려 줍 니 다. 이 함수 가 상태 코드 (즉, 이 함수 가 성공 적 으로 실행 되 었 는 지 여부) 를 종료 하고 0 은 실행 성공 을 표시 하 며 0 이 아 닌 것 은 실 패 를 표시 합 니 다.일상적인 작업 에서 조건 에 따라 함 수 를 실행 성공 여 부 를 되 돌려 주 고 다른 프로그램 이 사용 할 수 있 도록 할 수 있다.함수 가 결과 값 을 되 돌려 주 고 변수 에 저장 하려 면 echo 문 구 를 사용 해 야 합 니 다.
    [root@target ~]# cat return.sh 
    #!/bin/bash
    
    function returnFunc(){
        echo "value"
        return 247
    }
    
    DATA=$(returnFunc)
    echo "\$?=$?"
    echo "\$DATA=$DATA"
    [root@target ~]# bash return.sh 
    $?=247
    $DATA=value

4. 셸 스 크 립 트 가 여러 개 있 으 면 하나의 스 크 립 트 는 다른 스 크 립 트 의 함 수 를 호출 해 야 합 니 다. 다음 명령 을 실행 하고 지정 한 스 크 립 트 파일 을 불 러 옵 니 다.
. ./func.sh

혹은
source ./func.sh

위의 동작 은 다른 언어의 include 동작 과 유사 합 니 다.
   
 [root@target ~]# cat func.sh 
    #!/bin/bash
    
    function func1(){
        echo "This is func1"
    }
    
    function func2(){
        echo "This is func2"
    }
    
    function func3(){
        echo "This is func3"
    }
    [root@target ~]# cat call.sh 
    #!/bin/bash
    
    #source ./func.sh
    . ./func.sh
    
    func1
    func2
    func3
    [root@target ~]# bash call.sh
    This is func1
    This is func2
    This is func3

좋은 웹페이지 즐겨찾기