함수를 호출하게 하려고 합니다.
이게 내 코드야
#!/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
).