Shell Script에서 사용할 수 있는 if 조건문 & 조건식을 작성해보도록 할 것이다.
조건문이란?🤔
-> 지정된 조건을 Ture 또는 false로 판별하여 각 상황에 맞게 명령을 실행하도록 만드는 것을 뜻한다.
if [ 값1 조건식 값2 ] ; then
commands
fi
else
commands
fi
demo = 2
if문을 사용하려면 if 문 후에 나오는 '[' 사이에 스페이스바가 들어가야 한다.
작동방식:
변수 사용: 변수를 출력하고자 할때 ${변수} 처럼 중괄호로 감싸주는 습관을 들여야한다.
$변수로 출력할 경우 에러가 발생할 수 있기 때문이다.
올바른 예
echo "${demo}hello"
올바르지 않는 예
echo "$demohello"
출력 결과
$# : 넘어오는 인수의 개수
$0 : 쉘 스크립트의 파일명
$1 : 쉘 스크립트로 넘어온 첫번째 인수
$2 : 쉘 스크립트로 넘어온 두번째 인수
조건식은 다음과 같이 정리할 수 있다.
[ -z ${A} ] : A 문자열의 길이가 0이면 TRUE
[ -n ${A} ] : A 문자열의 길이가 0이 아니면 TRUE
[ ${A} -eq ${B} ] : A와 B값이 같으면 TRUE
[ ${A} -ne ${B} ] : A와 B값이 다르면 TRUE
[ ${A} -gt ${B} ] : A가 B보다 크면 TRUE
[ ${A} -ge ${B} ] : A가 B보다 크거나 같으면 TRUE
[ ${A} -lt ${B} ] : A가 B보다 작으면 TRUE
[ ${A} -le ${B} ] : A가 B보다 작거나 같으면 TRUE
[ ${A} == ${B} ] : A 문자열과 B 문자열이 동일할 경우 TRUE
[ ${A} =! ${B} ] : A 문자열과 B 문자열이 서로 다른 경우 TRUE
[ 조건식A -a 조건식B ] : 조건식 A와 B가 모두 TRUE이면 TRUE (&& 와 동일)
[ 조건식A -o 조건식B ] : 조건식 A가 TRUE거나 조건식B가 TRUE면 TRUE (|| 와 동일)
[ !조건식A ] : 논리값에 not를 수행한다.
[ -d ${A} ] : A 파일이 디렉토리면 TRUE
[ -e ${A} ] : A 파일이(노드, 디렉토리, 소켓 등등 모두) 존재하면 TRUE
[ -L ${A} ] : A 파일이 심볼릭 링크면 TRUE
[ -r ${A} ] : A 파일이 읽기 가능하면 TRUE
[ -s ${A} ] : A 파일의 크기가 0 보다 크면 TRUE
[ -w ${A} ] : A 파일이 쓰기 가능하면 TRUE
[ -x ${A} ] : A 파일이 실행 가능하면 TRUE
[ -c ${A} ] : A 파일이 Special character file 이면 TRUE
[ -f ${A} ] : A 파일이 디렉토리가 아닌 일반 regular 파일이면 TRUE
[ -S ${A} ] : A 파일이 소켓이면 TRUE
[ ${A} -nt ${B} ] : A 파일 B 파일보다 최신파일이면 TRUE
[ ${A} -ot ${B} ] : A 파일이 B 파일보다 이전파일이면 TRUE
[ ${A} -ef ${B} ] : A 파일과 B 파일이 같은 파일이면 TRUE