在这里进行一些媒体处理:
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
有一个all
或 3 个字母。我的问题是,如果为空,*
会使我的命令失败。$3
如果我删除它,我可以继续,但我无法确定az 之间$3
是其中一个all
还是 3 个字母。
我该如何解决这个问题?
答案1
使用模式
all|""
匹配一个all
或一个空字符串。
case "$3" in
all|"") ;;
[a-z][a-z][a-z])
other-code ;;
*)
catch-all-code
esac