일부 미디어 처리는 다음과 같습니다.
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