조건 실행
if [ condition ]
then
command set
fi
대괄호 앞 뒤에는 한칸 띄어져 있어야 한다.
대괄호 안에는 조건을 적는다.
condition 에는 숫자 비교, 문자열 비교, 파일 비교를 통해 조건 생성
숫자 비교
비교식 |
기능 |
num1 -eq num2 |
num1 과 num2가 같은지 확인한다. |
num1 -ne num2 |
num1 과 num2가 다른지 확인한다. |
num1 -ge num2 |
num1이 num2 보다 크거나 같은지 확인한다. |
num1 -gt num2 |
num1이 num2보다 큰지 확인한다. |
num1 -le num2 |
num1이 num2보다 작거나 같은지 확인한다. |
num1 -lt num2 |
num1이 num2보다 작은지 확인한다. |
#!/bin/bash
val_1=45
val_2=36
if [ $val_1 -lt 50 ]
then
echo "value 1 is less than 50"
else
echo "value 2 is greater than or equal to 50"
fi
if [ $val_1 -eq $val_2 ]
then
echo "value 1 is equal to value 2"
else
echo "value 1 is not equal to value 2"
fi
결과
문자열 비교
비교식 |
기능 |
str1 = str2 |
str1이 str2와 같은지 확인한다. |
str1 != str2 |
str1이 str2와 다른지 확인한다. |
str1 < str2 |
str1이 str2보다 작은지 확인한다. |
str1 > str2 |
str1이 str2보다 큰지 확인한다. |
-n str |
str의 길이가 0보다 큰지 확인한다. |
-z str |
str의 길이가 0인지 확인한다. |
[ 두 문자열이 일치하는지 확인 ]
결과
[ 두 문자열의 크기 비교 ]
결과
banana??
실행 오류의 원인:
부등호 기호를 이스케이프 하지 않아서 리다이렉트 기호로 해석해버렸기 때문.
수정
결과
[ 데이터 존재 유무 확인 ]
결과
파일 비교
비교식 |
기능 |
-d file |
파일이 존재하며, 파일의 종류가 디렉토리인가? |
-e file |
파일이 존재하는가? (파일 종류는 상관X) |
-f file |
파일이 존재하고 정규 파일(Regular file)인가? |
-r file |
파일이 존재하며, 읽을 수 있는가? |
-s file |
파일이 존재하며, 비어 있지 않은가? |
-w file |
파일이 존재하며, 기록할 수 있는가? |
-x file |
파일이 존재하며, 실행할 수 있는가? |
-O file |
파일이 존재하며, 현재 사용자가 소유했는가? |
-G file |
파일이 존재하며, 기본 그룹이 현재 사용자와 같은가? |
file_1 -nt file_2 |
file_1이 file_2보다 새것인가? |
file_1 -ot file_2 |
file_1이 file_2보다 오래되었나? |
A regular file is a file that is not a directory, symlink, socket, device, etc.
[ -e FILE ] : /etc/hosts = TRUE , /dev/null = TRUE
[ -f FILE ] : /etc/hosts = TRUE, /dev/null = FALSE
[ 디렉토리가 존재하는지 확인한 후에 디렉토리 위치 변경]
결과
[ 파일이 존재하면 현재 날짜와 시간을 그 파일에 추가 ]
결과
'Developer > Linux' 카테고리의 다른 글
쉘 스크립트 작성(5) (0) | 2019.06.18 |
---|---|
쉘 스크립트 작성(4) (0) | 2019.06.18 |
쉘 스크립트 작성(2) (0) | 2019.06.16 |
쉘 스크립트 작성 (0) | 2019.06.16 |
쉘 스크립트 파일 만들기 (0) | 2019.06.09 |