bash에서 중괄호 사용법

readme의 이미지

[~/work/test_img]$ case 12 in [0-9][0-9] )  echo C;;esac
C
[~/work/test_img]$ case 12 in [0-9]\{2\} )  echo C;;esac
[~/work/test_img]$ bash --version
GNU bash, version 4.2.24(2)-release (i686-pc-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
 
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

왜 중괄호가 적용이 되지 않을까요?
if 문으로는 참 해결 가능한건 알고 있습니다... CASE문으로는 불가능한 것일까요?

if [[ $VAL =~ Expression ]];then
...
fi

김정균의 이미지

case에서는 test를 사용하지 않기 때문이죠. if, where의 경우에는 test를 사용합니다. 예제를 들자면,
[ -n "$z" ] 표현식은 test -n "$z" 과 같습니다. case의 조건은 이것이 아니죠.

익명 사용자의 이미지

네.. 그렇고 보니.. case 문에서는 test가 작동 안하네요..

근데

이스케이프된 "중괄호"(\{ \})는 바로 앞에 나온 정규 표현식의 빈도수를 나타냅니다.
 
중괄호를 이스케이프 시키지 않으면 중괄호 문자 그대로 해석되기 때문에 꼭 이스케이프를 시켜야 합니다. 이 방법은 기술적으로 볼 때, 기본적인 정규 표현식의 일부가 아닙니다.
 
"[0-9]\{5\}" 는 0에서 9까지의 문자가 정확히 5번 나오는 것을 나타냅니다.
 
wiki.kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/x10468.html

여기 나와 있길래... 어떻게 '[[ ]]' 안쓰고 bash내부(?)에서 어떻게 되지 않을까해서 질문을 했었습니다.

그런데 별 방법이 없나보군요..