一部のメディア処理は次のとおりです。
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
かそのうちの1つかはわかりません。all
この問題をどのように解決できますか?
答え1
使用パターン
all|""
1つall
または空の文字列と一致します。
case "$3" in
all|"") ;;
[a-z][a-z][a-z])
other-code ;;
*)
catch-all-code
esac