Use o padrão
all|""
para corresponder a all
ou a uma string vazia.
case "$3" in
all|"") ;;
[a-z][a-z][a-z])
other-code ;;
*)
catch-all-code
esac
Fazendo alguns processamentos de mídia aqui:
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
Isso é para garantir que $3
seja all
ou 3 letras entre a-z. Meu problema é que *
faz meu comando falhar se $3
estiver vazio. Se eu removê-lo, posso continuar, mas não posso garantir que $3
seja all
ou 3 letras entre a-z.
Como posso corrigir esse problema?
Tags bash shell-script