( 1 ) if 문
if문은 조건을 비교하여 참/거짓 여부를 구분하여 참일 경우 수행될 부분과 거짓일 경우 수행될 부분으로 나뉜다.
■ 기본 형식
if [ 값1 조건식 값2 ]; then
실행문
elif [ 값1 조건식 값2 ]; then
실행문
else
실행문
fi
- 조건과 일치하는 경우 then 뒤의 커맨드가 실행된다.
- 조건과 다른 경우 차례로 elif [ 조건 ]에 적힌 내용을 확인한다.
- 일치하는 조건이 없는 경우 else 다음의 커맨드가 실행된 후 종료된다.
- else가 존재하지 않는 경우, 그대로 종료된다.
Ex)
A=1
B=2
C=3
if [ $A == 1 ]; then
echo $A
elif [ $B == 2 ]; then
echo $B
else
echo $C
fi
Ex)
#!/bin/sh
if [ "$1" -gt "$2" ]
then
echo "1번째 인수가 2번째 인수보다 크다"
elif [ "$1" -eq "$2" ]
then
echo "1번째 인수와 2번째 인수가 동일하다"
else
echo "1번째 인수가 2번째 인수보다 작다"
fi
<<* 비교식 사용 *>>
-z : 값이 공백이면 참
-n : 값이 공백이 아니면 참
-eq : 값1과 값2가 같으면
-ne : 값1과 값2가 다르면 참
-ge : 값1이 값2보다 크거나 같으면 참
-gt : 값1이 값2보다 크면 참
-le : 값1이 값2보다 작거나 같으면 참
-lt : 값1이 값2보다 작으면 참
-a : 조건식1과 조건식2 모두 참이면 참
-o : 조건식1과 조건식2 중 둘 중 하나라도 참이면 참
<<* 파일 확인 *>>
-f : 파일이 regular 파일이면 참
-d : 파일이 디렉토리면 참
-L : 파일이 심볼릭 링크면 참
-r : 파일의 본인 권한이 r이면 참
-w : 파일의 본인 권한이 w면 참
-x : 파일의 본인 권한이 x면 참
-s : 파일 크기가 0이 아니면 참
-S : 파일이 소켓이면 참
-nt : 파일1이 파일2보다 최신 파일이면 참
-ot : 파일1이 파일2보다 오래된 파일이면 참
-ef : 파일1과 파일2가 같은 파일이면 참
( 2 ) Switch 조건
- 조건・값이 변수와 일치하는 경우 그 곳에 적힌 커맨드가 실행된다.
■ 기본 형식
case [변수] in
case1)
[case1일 경우 수행할 작업]
;;
case2)
[case2일 경우 수행할 작업]
;;
...
*)
[default로 수행할 작업]
;;
esac
-------------------------------------------------------------------------------------
Ex)
#!/bin/bash
case $1 in
# $1 == protoss인 경우
protoss)
echo "select protoss"
# semicolon 2개로 각 case들을 구분한다.
;;
terran)
echo "select terran"
;;
zerg)
echo "select zerg"
;;
# default는 다음과 같이 *)로 표시해준다.
*)
echo "random"
;;
# case를 역순으로 쓴 esac 로 case문을 닫아준다.
esac
( 3 ) while 루프
조건과 일치할 때 반복된다
■ 기본 문법
while [ 조건 ]
do
명령1
명령2
done
* 한 줄 작성법 *
while [ 조건 ]; do 명령1;명령2; done
Ex)
#!/bin/bash
number=0
while [ $number -le 2 ]
do
echo "Number: ${number}"
((number++))
done
Ex) 무한 루프
#!/bin/bash
number=0
while :
do
if [ $number -gt 2 ]; then
break
fi
echo "Number: ${number}"
((number++))
done