bash에서 중괄호 사용법
글쓴이: readme / 작성시간: 수, 2012/03/21 - 10:11오후
[~/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
Forums:


case에서는 test를 사용하지 않기 때문이죠.
case에서는 test를 사용하지 않기 때문이죠. if, where의 경우에는 test를 사용합니다. 예제를 들자면,
[ -n "$z" ] 표현식은 test -n "$z" 과 같습니다. case의 조건은 이것이 아니죠.
네.. 그렇고 보니.. case 문에서는 test가
네.. 그렇고 보니.. case 문에서는 test가 작동 안하네요..
근데
이스케이프된 "중괄호"(\{ \})는 바로 앞에 나온 정규 표현식의 빈도수를 나타냅니다. 중괄호를 이스케이프 시키지 않으면 중괄호 문자 그대로 해석되기 때문에 꼭 이스케이프를 시켜야 합니다. 이 방법은 기술적으로 볼 때, 기본적인 정규 표현식의 일부가 아닙니다. "[0-9]\{5\}" 는 0에서 9까지의 문자가 정확히 5번 나오는 것을 나타냅니다. wiki.kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/x10468.html여기 나와 있길래... 어떻게 '[[ ]]' 안쓰고 bash내부(?)에서 어떻게 되지 않을까해서 질문을 했었습니다.
그런데 별 방법이 없나보군요..
댓글 달기