![함수를 호출하기 위해 getopts를 얻으려고 시도 중](https://linux55.com/image/140341/%ED%95%A8%EC%88%98%EB%A5%BC%20%ED%98%B8%EC%B6%9C%ED%95%98%EA%B8%B0%20%EC%9C%84%ED%95%B4%20getopts%EB%A5%BC%20%EC%96%BB%EC%9C%BC%EB%A0%A4%EA%B3%A0%20%EC%8B%9C%EB%8F%84%20%EC%A4%91.png)
함수를 호출하게 하려고 합니다.
이게 내 코드야
#!/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
).