/var/log/messages
쉘 스크립트 if문 본문
Bash 쉘 스크립트에서 if문을 사용할 때 다양한 조건 테스트를 수행할 수 있습니다. 다음은 주요 조건 테스트와 그 의미입니다:
1. 숫자 비교:
-eq: equal (같음)
예: [ $a -eq $b ]: 변수 a와 b의 값이 같으면 참입니다.
-ne: not equal (같지 않음)
-gt: greater than (보다 큼)
-ge: greater than or equal (보다 크거나 같음)
-lt: less than (보다 작음)
-le: less than or equal (보다 작거나 같음)
2. 문자열 비교:
=: 문자열이 같은 경우 참
!=: 문자열이 다른 경우 참
-z: zero, 문자열 길이가 0인 경우 참
-n: non-zero, 문자열 길이가 0이 아닌 경우 참
3. 파일 테스트:
-e: exists, 파일이 존재하면 참
-f: file, 파일이 일반 파일이면 참
-d: directory, 파일이 디렉토리면 참
-s: size, 파일 크기가 0보다 크면 참
-r: readable, 파일이 읽을 수 있으면 참
-w: writeable, 파일이 쓰기 가능하면 참
-x: executable, 파일이 실행 가능하면 참
-a: available, 파일이 존재하면 참 (deprecated, -e와 동일하게 사용)
-o: owned, 파일의 소유자가 현재 사용자인 경우 참
4. 논리 연산자:
!: NOT 연산
-a: AND 연산 (deprecated, 대신 && 사용 권장)
-o: OR 연산 (deprecated, 대신 || 사용 권장)
예제
5. '[ ]'와 '[[ ]]'
[]: 기본 테스트 연산자입니다.문자열 비교, 숫자 비교 등의 기본적인 테스트를 수행합니다.
[[ ]]: Bash에서 제공하는 확장 테스트 연산자입니다.
[]보다 더 많은 기능을 제공하며, 정규식 비교, 문자열 패턴 매칭 등의 고급 기능을 지원합니다.
즉, 일단 '[[ ]]' 쓰고 보는 것이 더 좋습니다. 차이를 체감 할 수 있는 예시를 제공하겠습니다.
1. 단어 분할과 와일드 카드 확장
'[ ]'는 변수에 단어 분할이나 와일드카드 확장이 발생하지만, '[[ ]]'는 그렇지 않습니다.
2. 다중 조건
'[ ]'에서는 여러 조건을 함께 사용하기 어렵지만, '[[ ]]'를 사용하면 더 간결하게 작성할 수 있습니다.
3. 정규 표현식
'[ ]'는 정규 표현식을 지원하지 않지만, '[[ ]]'는 정규 표현식을 지원합니다.
'SUSE' 카테고리의 다른 글
어플리케이션과 프로세스의 차이 (0) | 2023.10.21 |
---|---|
awk 프로그래밍 (0) | 2023.10.01 |
쉘 스크립트 배열 (2) | 2023.09.03 |
Yast로 방화벽 구축하기 (0) | 2023.08.11 |
SUSE Certified Engineer, SCE (0) | 2023.08.05 |