if 문

지정된 명령어를 실행하여 종료상태가 0 이면 참으로 판단하고 그 외에는 거짓으로 판단

 

셸 스크립트 예시

if-bin.sh

#!/bin/bash

if [ "$1" = "bin" ]; then   # 해석 : 커맨드 라인에서 인자 1이 "bin" 이면 OK 출력
   echo "OK"
ellif [ "$1" = "hello" ]; then
   echo "Hello" 
else
   echo "NG"
fi

  ▶ if 뒤에는 조건문이 아닌 명령어 

  ▶ [ 가 명령어 : [ 뒤에 오는 "$1", "bin",  ] 모두 명령어 [ 의 인자

  ▶ 문법상의 주의점
         띄어쓰기
         - [ ] 안의 문자열 간의 공백 필수

         - if 와 [ 사이에 공백

         - if [   ] 후에 세미콜론(;)

사용

$ ./if-bin.sh "bin"
OK

  

● 명령어의 종료상태 확인 코드

$ echo $?     # 직전에 사용한 명령어의 종료 상태 출력

  ▶  종료 상태면 0, 에러가 발생하면 0 이외의 값 출력

$ [ "$1" = "bin" ]   # 조건식 명령어 실행 : 참이면 0, 아니면 0 이외의 값 
$ echo $?            
1                    # 조건식 뒤에 아무 값이 없으므로 1 출력

  ▶  if 문도 참이면  0, 에러가 발생하면 0 이외의 값 출력

#!/bin/bash

if [ -z "$1" ]; then
   exit 1         
fi

  exit 를 이용하여 출력할 종료상태를 지정

 test 명령어

if [ "$1" = "bin" ]; then      
if test "$1" = "bin";  then 

  둘 다 같은 의미를 지님

 연산자

문자열 비교

연산자 내용
str1 = str2 str1 과 str2 가 같음 
str1 != str2 같지 않음
-n str1 빈 문자열이 아님
-z str1 빈 문자열임 → 빈 문자열이면 참 

 

정수 비교 - 오직 정수만 다룸

연산자 내용
1 -eq 2 같다
1 -ne 2 같지 않다
1 -lt 2 < , 1 이 2 보다 작음
1 -le 2 ≤ , 1 이 2 이하임
1 -gt 2 > , 1 이 2 보다 큼 
1 -ge 2 ≥ ,  1이 2 이상임

 

파일 속성

연산자 내용
-e < file 명> < file 명> 존재
-d < file 명> < file 명> 존재하고 디렉터리임
-h < file 명> < file 명> 존재하고 심볼릭 링크임
-L < file 명> < file 명> 존재하고 심볼릭 링크임
-f < file 명> < file 명> 존재하고 일반 파일임
-r < file 명> < file 명> 존재하고 읽기 권한이 부여되어 있음
-w < file 명> < file 명> 존재하고 쓰기 권한이 부여되어 있음
-x < file 명> < file 명> 존재하고 실행 권한이 부여되어 있음
< file 명1 > -nt < file 명 2 > < file 명 1 > 의 변경 시각이 < file 명 2> 보다 최근임
< file 명 1 > -ot < file 명 2 > < file 명 1 > 의 변경 시작이 < file 명 2 >  보다 오래됨

 

결합 연산자

연산자 내용
조건식 1 -a 조건식2 두 조건식이 참이면 참 (and)
조건식 1 -o 조건식2 두 조건식중 하나가 참이면 참(or)
! 조건식 조건식의 진위값을 반대로 함(not)
() 조건식을 그룹화



&& 와 ||

명령어 1 && 명령어 2 : 명령어 1이 정상종료하여야 명령어2를 실행

$ [ -f file.txt ] && cat file.txt

 

명령어 1 || 명령어 2 : 명령어 1이 정상종료하지 않아야 명령어2를 실행

$ [ -f file.txt ] || touch file.txt

+ Recent posts