728x90
반응형
예를 들어 shell script에서 if문을 사용할 때, 일반적으로 []
를 주로 사용했을 것이다.
결론을 먼저 말하자면 []
는 sh 기반이고, [[]]
는 bash 기반으로 동작하는 차이가 있다.
또한 []
는 옛날 리눅스 환경의 잔해이다.[[]]
는 []
의 개선된 버전으로, 좀 더 직관적으로 표현하는 방식이 [[]]
이다.
차이점
[] 표현 | [[]] 표현 |
바이너리 처럼 작용한다. | bash에 따라 다르다. |
기본적으로 'not'연산자를 지원하지 않는다. 단일 조건만 지원한다. |
대괄호 내에서 논리 연산자를 사용할 수 있다. |
test와 동의이다. | 새롭게 개선된 버전이며, 프로그램이 아닌 키워드이다. |
개선점
- 대괄호 안에
&&
,||
와 같은 and, or 조건을 사용할 수 있다. - 큰따옴포
""
를 사용하지 않아도 된다. - 정규 표현식 사용시 패턴 매칭이 가능하다.
잘못 사용된 예
if [ '1' = '1' || '2' = '2' ]; then
echo "It is true"
else
echo "It is false"
fi
위의 코드 실행시 에러가 발생된다. 대괄호 하나짜리 안에는 ||
연산을 하지 못한다.
따라서 기본적으로 이중 대괄호를 쓰는 편이 좋다.
Reference
- http://mywiki.wooledge.org/BashFAQ/031
- https://magnuxx.tistory.com/entry/%EC%89%98-%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%B0%A8%EC%9D%B4%EC%A0%90-%EB%8C%80%EA%B4%84%ED%98%B8-1%EA%B0%9C%EC%99%80-2%EA%B0%9C%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90
- https://stackoverflow.com/questions/3427872/whats-the-difference-between-and-in-bash
반응형
'[OS]Operating System > [Linux]' 카테고리의 다른 글
[Linux] retry logic in script (0) | 2023.06.13 |
---|---|
[Linux] bash shell - 조건문 사용법 (0) | 2023.06.13 |
[Linux] shell script - python exit code (0) | 2023.04.30 |
[Linux] $?의 의미 (0) | 2023.04.30 |
[Linux] IF문 (0) | 2023.04.30 |