함수를 호출하기 위해 getopts를 얻으려고 시도 중

함수를 호출하기 위해 getopts를 얻으려고 시도 중

함수를 호출하게 하려고 합니다.

이게 내 코드야

#!/bin/bash
while getopts ":a:b:" opt; do
    case $opt in 
        a)
            my_function "%e"
            ;;
        b)
            my_function "%s"
            ;;
       /?)
            echo "Invalid option: -$OPTARG"
            ;;
    esac
done

my_function() {
    option=$1
    //do something here
}

내가 전화할 때:./myscript.sh -a sshd

이 표시됩니다./myscript.sh: line 5: my_function: command not found

문제를 해결하려면 어떻게 해야 하나요?

답변1

쉘 스크립트가 함수를 호출하려면 함수가 호출되기 전에 함수를 정의해야 합니다. 귀하의 코드에서는 그렇지 않습니다.

이 문제를 해결하려면 함수를 명령줄 구문 분석 루프 위로 이동하세요.

또한 마지막 case테스트에서는 *)처리되지 않은 옵션을 모두 포착하게 됩니다( /?단일 옵션 문자와 일치하지 않음). 그리고 getopts유틸리티는 이미 오류 메시지를 출력하므로 이를 반복할 필요가 없습니다( $OPTARG아마 여기서도 사용 중인 메시지가 아닐 수도 있습니다 $opt).

관련 정보