![케이스에는 비어 있거나 특정 문자가 허용됩니다.](https://linux55.com/image/130676/%EC%BC%80%EC%9D%B4%EC%8A%A4%EC%97%90%EB%8A%94%20%EB%B9%84%EC%96%B4%20%EC%9E%88%EA%B1%B0%EB%82%98%20%ED%8A%B9%EC%A0%95%20%EB%AC%B8%EC%9E%90%EA%B0%80%20%ED%97%88%EC%9A%A9%EB%90%A9%EB%8B%88%EB%8B%A4..png)
일부 미디어 처리는 다음과 같습니다.
case "$3" in
all)
:
;;
[a-z][a-z][a-z])
if [ "$2" == "subtitles" ]; then switches="$switches -s $3"
if [ "$2" == "audio" ]; then switches="$switches -a $3"
;;
*)
printf 'Invalid language code for language (should be 3-letter ISO-639 or "all"): %s\n' "$2"
exit 1
;;
esac
이는 az 사이에 $3
1~3개의 문자가 있는지 확인하기 위한 것입니다 all
. 내 문제는 비어 있으면 *
명령이 실패한다는 것입니다. $3
삭제하면 계속할 수는 있는데, az 사이에 있는 3글자 $3
인지 그 중 하나인지 알 수 없습니다.all
이 문제를 어떻게 해결할 수 있나요?
답변1
사용 패턴
all|""
하나 all
또는 빈 문자열과 일치합니다.
case "$3" in
all|"") ;;
[a-z][a-z][a-z])
other-code ;;
*)
catch-all-code
esac