작성
·
348
1
정규 표현식부터 난이도가 높아져서 이해가 잘 안되고 있습니다.
Bash는 여러 특수 문자의 조합들이 의미하는것이 어려운데요......
아래 2가지 질문에 다시 한번 설명해주시면 감사하겠습니다.
1. if [[ $LANG =~ $locale ]] : =~ 우측 표현식($locale)이 좌측 표현식($LANG)을 포함할때 사용이 가능한건가요?
부연 설명 드리자면, $LANG 입력시 "en_US.UTF-8" 결괏값이 나오는데, locale 명령어에 이 결괏값이 포함되어 있어야만 정규 표현식 비교가 가능한지 궁금합니다.
2. =~ 는 그냥 일반적인 산술 연산시 = 와 같은 일종의 문법인건가요?
답변 1
0
if [[ 대상문자열 =~ 패턴식 ]]; then ... else ... fi
왼쪽에는 비교하고 싶은 문자열을 적고, 비교연산자(=~) 오른쪽에는 정규식 패턴식을 적습니다
말 그대로 패턴이 일치하기만 하면 성공(true) 이 될 것입니다.
adfas1211 님께서 '우측 표현식($locale)이 좌측 표현식($LANG)을 포함할때 사용이 가능한건가요?' 라고 표현해주셨는데 그렇게 생각하셔도 됩니다. 그 근거는 다음 예시입니다
(예문)
bash-3.2$ if [[ HELLO =~ H ]]; then echo YES; else echo NO; fi
YES
bash-3.2$ if [[ HELLO =~ HELLO1 ]]; then echo YES; else echo NO; fi
NO
bash-3.2$
추가. [[ ]] 이중 대괄호는 BASH에서는 지원하지만 본쉘(sh)에서는 사용할 수 없습니다. 주의하세요~~
영상 섹션 2. 특수문자 종류 미리 보기에서 보신 것처럼 해커들은 자신들이 표현(구현)하고 싶은 기능을 모두 특수문자에 담고 싶어 했을 것입니다. 하지만, 키보드 특수문자의 갯수는 한정되어 있죠. 따라서, 중복 정의가 불가피합니다
바로 이 부분이 쉘 스크립트를 난해하게 만들었다는 점은 인정해야 합니다
보충 설명이 필요하면 댓글 달아주세요