Bash 스크립트에서 여러 조건을 한 번에 검사할 때,
AND(그리고), OR(또는) 연산을 사용합니다.
예를 들어, “파일이 존재하고 실행 권한이 있을 때” 또는 “하나라도 조건을 만족할 때”처럼요.
Single Square Bracket: [ ] 구문
Bash의 기본적인 조건문 구문입니다.
이 안에서 논리 연산을 할 때는 다음과 같은 방법을 사용할 수 있습니다.
기본 연산자
| 연산자 | 의미 |
| -a | logical AND (그리고) |
| -o | logical OR (또) |
예시
if [ -f file.txt -a -r file.txt ]; then
echo "파일이 존재하고 읽기 권한이 있습니다."
fi
-a, -o 연산자는 가독성이 떨어지고, 복잡한 조건에서는 오류를 유발할 수 있기 때문에 &&, || 형태로 사용하는 것이 더 안전하고 권장됩니다.
[ expr ] && [ expr ] 형태
이 방법은 두 개의 독립된 조건문을 논리적으로 연결합니다.
if [ -f file.txt ] && [ -r file.txt ]; then
echo "파일이 존재하고 읽을 수 있습니다."
fi
- && : 앞의 조건이 참(true) 일 때만 뒤의 조건을 평가
- || : 앞의 조건이 거짓(false) 이면 뒤의 조건을 평가
즉,
[ expr ] && [ expr ] # AND (둘 다 참)
[ expr ] || [ expr ] # OR (둘 중 하나라도 참)
Double Square Bracket: [[ ]] 구문
[[ ]] 구문은 Bash 확장형 조건식으로,
[ ]보다 더 강력하고 문법 오류에 덜 민감합니다.
이 구문에서는 논리 연산자를 C언어 스타일로 바로 사용할 수 있습니다.
예시
if [[ -f file.txt && -r file.txt ]]; then
echo "파일이 존재하고 읽기 권한이 있습니다."
fi
if [[ -d dir || -L dir ]]; then
echo "디렉토리이거나 심볼릭 링크입니다."
fi
[[ ]]의 장점:
- 문자열 비교 시 쿼팅 실수에 덜 민감함
- 공백이나 특수문자가 포함돼도 오류가 잘 안 남
- 복합 조건식을 한 줄에 깔끔하게 표현 가능
예시로 정리하기
file="data.txt"
dir="logs"
# [ ] 방식
if [ -f "$file" ] && [ -w "$file" ]; then
echo "파일이 존재하고 쓰기 가능"
fi
# [[ ]] 방식 (권장)
if [[ -d "$dir" || -L "$dir" ]]; then
echo "디렉토리이거나 심볼릭 링크입니다."
fi
정리하면
Bash에서는 [ ]보다 [[ ]]를 사용하고,
-a, -o 대신 &&, ||를 쓰는 것이 현대적이고 안전합니다.
'개발 환경 및 프로젝트 관리 > Linux 개념' 카테고리의 다른 글
| Bash 반복문 — while과 until의 차이 (0) | 2025.10.08 |
|---|---|
| Bash의 for 반복문 완벽 정리 (0) | 2025.10.08 |
| Bash에서 파일 테스트 연산자 (File Test Operators) (0) | 2025.10.08 |
| Bash에서 문자열 비교 (String Comparison) (0) | 2025.10.08 |
| Bash 스크립트에서 if문과 정수 비교 (0) | 2025.10.08 |