반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

/var/log/messages

쉘 스크립트 if문 본문

SUSE

쉘 스크립트 if문

로만로만 2023. 9. 24. 20:19
반응형

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