大小写接受空或特定字符

大小写接受空或特定字符

在这里进行一些媒体处理:

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

相关内容