티스토리 뷰
Bash shell script에서 어떤 경로의 파일이 실제로 존재하는지 체크하는 방법에 대해서 알아보겠습니다.
텍스트 파일 등을 읽을 때, 먼저 특정 경로에 파일이 존재하는지 확인 후 read를 시도하는데요. if문으로 파일 존재 유무를 체크하는 방법을 소개합니다.
'파일/디렉토리' 가 존재 여부 확인
일반 파일과 디렉토리를 구분하지 않고, 해당 경로의 파일이 존재하는지 체크하고 싶을 때는 아래와 같이 -e 비교 연산자를 사용하면 됩니다.
아래와 같이 "if [ -e "$File" ]" 는 변수 File의 경로에 일반 파일 또는 디렉토리가 존재하면 true를 리턴합니다.
#!/bin/bash
File=/var/tmp/uml.zip
if [ -e "$File" ]; then
echo "$File exist "
fi
실행 결과:
/var/tmp/uml.zip exist
파일이 존재하지 않는 경우를 체크
-e와 if-else를 사용하여 존재하지 않는 경우에 대한 예외처리를 할 수도 있지만, 아래와 같이 !(not)를 붙여서 존재하지 않는 경우를 if문으로 확인할 수 있습니다.
#!/bin/bash
File=/var/tmp/uml1.zip
if [ ! -e "$File" ]; then
echo "$File not exist "
fi
실행 결과:
/var/tmp/uml1.zip not exist
디렉토리가 아닌 파일의 존재 여부 확인
-e는 일반 파일뿐만 아니라 디렉토리 구분 없이, 존재하기만 하면 true를 리턴하였습니다.
-f는 디렉토리에 대해서는 항상 false를 리턴하며, 일반 파일에 대해서 파일이 존재할 때만 true를 리턴합니다. 즉, 해당 파일이 일반 파일이고, 파일이 존재하는 경우를 확인하고 싶을 때 -f 비교 연산자를 사용할 수 있습니다.
#!/bin/bash
File=/var/tmp/uml.zip
if [ ! -f "$File" ]; then
echo "$File not exist "
fi
실행 결과:
/var/tmp/uml.zip exist
파일이 아닌 디렉토리의 존재 여부 확인
반대로 일반 파일은 관심 없고, 해당 경로의 파일이 디렉토리이고 디렉토리가 존재하는 경우를 확인하고 싶을 때는 -d 연산자를 사용하면 됩니다. 그럼 일반 파일은 파일이 존재해도 false를 리턴하며, 디렉토리가 존재할 때만 true가 리턴됩니다.
#!/bin/bash
File=/var/tmp/tempdir
if [ -d "$File" ]; then
echo "$File exist "
fi
실행 결과:
/var/tmp/tempdir exist
'개발 > Bash' 카테고리의 다른 글
[Bash shell] 빈 문자열 확인 방법 (0) | 2023.11.04 |
---|---|
[Bash shell] 문자열 변수 합치기 (0) | 2023.10.28 |
[Bash shell] 문자열 마지막 문자(n개) 제거 (0) | 2023.10.27 |
- Total
- Today
- Yesterday
- 나무던전
- 앞자리 0 제거
- 리스보아 카드
- adb
- aosp 빌드
- 원숭이의숲
- 15e 트램
- DART
- 주황버섯
- Unreal Engine
- 메이플랜드
- 와보땅
- Skia
- 파이썬
- 포르투
- 오블완
- Python
- javascript
- 다크스텀프
- Flutter
- android
- java
- 12e 트램
- 파란버섯
- 모루정원
- 와일드보어의 땅
- 리스본
- 포르투갈
- 네키
- 티스토리챌린지
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |