내 구문이 어떤 방식으로든 중첩 조건과 관련이 있다고 확신하므로 아래 오류가 발생합니다. 기본적으로 나는 telegram_bot에 빈 메시지를 보내고 싶지 않습니다. 빈 메시지를 감지하면 오류가 발생합니다. 첫 번째 IF는 NULL이 유효한지 확인합니다. 그러나 32행에서는 그렇지 않습니다.
xxx.sh: line 32: syntax error near unexpected token `)'
xxx.sh: line 32: ` *) # contains nothing or only spaces'
26 if [ -z "$message" ]; then
27 echo "Please pipe a message to me!"
28 else
29 case $message in
30 *[!\ ]*) # contains non-space
31 sendTelegram
32 *) # contains nothing or only spaces
33 DO NOTHING...
34 esac
35 fi
답변1
케이스 조건을 종료해야 합니다.
case $message in
*[!\ ]*) # contains non-space
sendTelegram
;;
*) # contains nothing or only spaces
DO NOTHING..
;;
esac
;;
각 절은;&
, , 또는 으로 끝나야 합니다;;&
.이 연산자를 사용 하면
;;
첫 번째 패턴 일치 이후 후속 일치가 시도되지 않습니다.;&
대신 in을 사용하면;;
다음 절과 연결된 명령 목록(있는 경우)으로 실행이 계속됩니다.;;&
대신 in을 사용하면;;
쉘은 다음 절의 패턴을 테스트하고(있는 경우) 성공적인 일치 시 관련 명령 목록을 실행합니다.
Kusalananda가 지적했듯이 원하는 경우 실제로 마지막 절의 종결자를 건너뛸 수 있습니다.