bash script2023. 8. 23. 13:46

 

반달가면 이글루에서 백업 - 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인지를 판별하는 형태로 만들면 되겠다.

앞에서 뭔가 작업을 통해서 결과 파일이 생겼는데 이 결과 파일 내용에 따라 서로 다른 작업을 지정해 주고 싶을 때 편리하다.

728x90
Posted by 반달가면