#!/bin/bash function func(){ echo "func()" } #함수호출 func
비교문(if..fi)
쉘에서는비교문이약간특이하다. bash의 if문의특이한점은 fi 와대괄호([ ]) 이다. 다른언어와달리중괄호를사용하지않기때문에 fi로 if문의끝을알려주어야한다. 주의해야할점은 if문뒤에나오는대괄호 [ ] 와조건식사이에는반드시공백이존재해야한다.
비교문에는다양한연산자를사용할수있다.
연산자
설명
값1 -eq 값2
# 값이같음(equal)
값1 -ne 값2
# 값이같지않음(not equal)
값1 -lt 값2
# 값1이값2보다작음(less than)
값1 -le 값2
# 값1이값2보다작거나같음(less or equal)
값1 -gt 값2
# 값1이값2보다큼(greater than)
값1 -ge 값2
# 값1이값2보다크거나같음(greater or equal)
문자열비교
연산자
설명
문자1 = 문자2
# 문자1 과문자2가일치 (sql같이 = 하나만써도일치로인식)
문자1 == 문자2
# 문자1 과문자2가일치
문자1 != 문자2
# 문자1 과문자2가일치하지않음
-z 문자
# 문자가 null 이면참
-n 문자
# 문자가 null 이아니면참
문자 == 패턴
# 문자열이패턴과일치
문자 != 패턴
# 문자열이패턴과일치하지않음
논리연산자
연산자
설명
조건1 -a 조건2
# AND
조건1 -o 조건2
# OR
조건1 && 조건2
# 양쪽다성립
조건1 || 조건2
# 한쪽또는양쪽다성립
!조건
# 조건이성립하지않음
true
# 조건이언제나성립
false
# 조건이언제나성립하지않음
산술연산자(쉘에서는expr 숫자연산자숫자’ 형식으로사용한다.)
연산자
의미
예시
+
덧셈
echo `expr 10 + 20` => 30
-
뺄셈
echo `expr 20 - 10` => 10
\*
제곱
echo `expr 11 \* 11` => 121
/
나눗셈
echo `expr 10 / 2` => 5
%
나머지
echo `expr 10 % 4` => 2
=
저장
a=$b b의값은 a에저장
==
동일
[ "$a" == "$b" ] $a과 $b가동일하는경우 TRUE가반환
!=
다름
[ "$a" != "$b" ] $a과 $b가동일하지않는경우 TRUE가반환
예제로살펴본다.
#!/bin/bash function func(){ a=10 b=5 if [ ${a} -eq ${b} ]; then echo "a와 b는같다." fi if [ ${a} -ne ${b} ]; then echo "a와 b는같지않다." fi if [ ${a} -gt ${b} ]; then echo "a가 b보다크다." fi if [ ${a} -ge ${b} ]; then echo "a가 b보다크거나같다." fi if [ ${a} -lt ${b} ]; then echo "a가 b보다작다." fi if [ ${a} -le ${b} ]; then echo "a가 b보다작거나같다." fi } #함수호출 func
여러조건을사용할때, 다른언어에서는 else if역할을하는것을쉘스크립트에서는 elif라는것을사용하여 else if와동일한역할을할수있다. elif[ 조건 ]; then 형식으로사용한다. 만약반복문에서사용하여조건이참일때반복문을멈추고싶을때 break라는키워드를사용하여반복문을멈출수있다.
#!/bin/bash DRINK="coffee" case "$DRINK" in "beer") echo "맥주입니다" ;; "juice") echo "주스입니다" ;; "coffee") echo "개발자에겐카페인필수!" ;; esac
CASE에서OR 연산도가능하다.
COUNTRY=korea case $COUNTRY in "korea"|"japan"|"china") # or 연산도가능하다 echo "$COUNTRY is Asia" ;; "USA"|"Canada"|"Mexico") echo "$COUNTRY is Ameria" ;; * ) echo "I don't know where is $COUNTRY" ;; esac
#!/bin/bash # 초기값; 조건값; 증가값을사용한정통적인 for문 for ((i=1; i<=4; i++)); do echo $i done
반복문(for in)
#!/bin/bash function func(){ echo "사용예1" for i in 1 2 3 4 5 do echo "${i}" done echo "사용예2" list="1 2 3 4 5" for i in ${list} do echo "${i}" done echo "사용예3" for i in {1..5} do echo "${i}" done echo "사용예4: 크기를 2만큼증가시키면서출력" for i in {1..5..2} do echo "${i}" done echo "사용예5: 배열을이용" arr=(1 2 3 4 5) for i in "${arr[@]}" do echo "${i}" done echo "사용예6: C와유사한형식의 for문" for ((i=0; i<5; i++)); do echo "${i}" done } #함수호출 func
반복문(while)
수행조건이true일때실행되는반복문이다.
count=0 while [ ${count} -le 5 ]; do echo ${count} count=$(( ${count}+1 )) done
이중괄호를사용하면논리기호로도사용가능하다.
count=0 while (( ${count} <= 5 ));# 이중괄호사용하면논리기호사용가능 do echo ${count} count=$(( ${count}+1 )) done
반복문(until)
수행조건이false 일때실행되는반복문이다. 조건이While의반대라고생각하면된다.
count2=10 until [ ${count2} -le 5 ]; do echo ${count2} count2=$(( ${count2}-1 )) done