반달가면 이글루에서 백업 - http://bahndal.egloos.com/606482
어떤 파일에 특정한 문자열이 있는 경우와 없는 경우에 각기 다른 작업을 해야 할 경우, if 조건문과 grep을 적절히 조합해서 간편하게 구현할 수 있다.
우선 if 조건문의 -z 옵션을 보자. 이것은 문자열의 길이가 0이면 참, 0이 아니면 거짓이다. 아래의 예시를 보자.
string="abc"
# 변수 abc에 저장된 문자열의 길이가 0인 경우 메시지 출력
if [[ -z $string ]]
then echo "변수 string에 저장된 문자열의 길이는 0입니다."
fi
이제 원래의 문제로 돌아가서, 예를 들어 파일 my_file.txt에 문자열 "abcd"가 존재하느냐 여부에 따라서 뭔가 다른 작업을 해야 하는 경우를 생각해 보자. if 조건에 grep을 이용한 문자열 검색의 결과를 사용해서 이 결과의 길이가 0인지 아닌지를 판단하면 될 것이다.
# my_file.txt에 문자열 "abcd" 존재 여부 확인
if [[ -z `grep "abcd" my_file.txt` ]]
then echo "my_file.txt에 문자열 abcd가 존재하지 않습니다."
else echo "my_file.txt에 문자열 abcd가 존재합니다."
fi
grep으로 문자열을 검색하는 명령을 역따옴표를 이용해서 if 조건문 안에 넣고, 그 출력값의 길이가 0인지를 판별하는 형태로 만들면 되겠다.
앞에서 뭔가 작업을 통해서 결과 파일이 생겼는데 이 결과 파일 내용에 따라 서로 다른 작업을 지정해 주고 싶을 때 편리하다.
'bash script' 카테고리의 다른 글
[bash: curl] curl을 이용한 FTP 자동 접속 - 파일명 변경 (0) | 2023.08.23 |
---|---|
[bash: sed] 16진수값(hex) 대체하기 (0) | 2023.08.23 |
[bash: awk] awk에서 필드 구분자를 지정할 때 "escape sequence" 관련 경고 메시지 발생 (0) | 2023.08.23 |
[bash: sync] 계속 파일 구성이 변하는 디렉토리에 대한 작업에 대한 문제 (0) | 2023.08.22 |
[bash: function] 함수의 반환값을 변수에 할당할 때 유의할 점 (0) | 2023.08.22 |