Shell Script

쉘 스크립트 Document

1. 개요

Windows에 배치 프로그램(bat)이 있다면 Linux에는 쉘 스크립트가 있다.

쉘 스크립트는 리눅스의 기본 명령어를 조합해서 만들기 때문에 보통 짠다고 한다.

그래서 명령어와 옵션을 많이 알수록 유리하다.

쉘 스크립트는 인터프리터 언어(↔ 컴파일 언어)이기 때문에 프로그램 실행시 맨 위에서부터 한줄 한줄 실행이 된다.

따라서 컴파일 언어에 비해 속도가 느리지만, 테스트 프로그램을 작성할 때는 바로바로 결과를 알 수 있기 때문에 많이 사용한다.

 

2. Script

# 사용할 shell을 맨 처음에 쓴다.
#!/bin/sh
 
# 주석은 맨 앞에 #을 붙이면 된다.
 
##### 변수 사용법
# 변수명=값
#     쉘은 변수 type이 없어서 매우 편하다.
#     이 때 = 사이에 공백이 있으면 안 된다.
#     값에 공백이 있을경우 ""로 묶어주고, 값에 명령어가 들어갈 경우 ``로 묶어준다.
# 변수 사용법 : $변수명
# 변수의 종류에는 전역변수(env), 지역변수(set), 예약변수, 매개변수가 있다.
#     전역변수 : 환경변수라고도 하며, 전체적으로 적용이 되는 변수다. 주로 "PATH"값을 넣을때 많이 사용한다.(~/.bashrc or /etc/profile 참고)
#     지역변수 : set 명령어로 확인할 수 있으며 unset으로 해제할 수 있다.
#     예약변수 : 이걸 많이 알면 grep, get 이런 걸 할 필요가 없다. 많이 알수록 좋다. 찾아보기~
#                 HOME, PATH, LANG, PWD, PPID, SECONDS, SHLVL, SHELL, BASH_RNV, MAIL, OSTYPE, TERM, HOSTNAME, LOGNAME, UID, USER, HISTFILE ...
#     매개변수 : 종류는 많지 않지만 주로 "치환"할 때 많이 사용한다.
string="hello shell"
 
 
##### 입력
# 입력받아서 input에 저장됨
echo "input string : "
read input
 
 
##### 연산(+-*/)
# expr, 공백 필수!!!
# expr이 없으면 연산이 안 된다.
# *, /, % 연산의 경우 앞에 \를 붙여야 연산이 된다.
expr 3 + 5
expr 8 \* 2
 
 
##### 조건문
### if
# 구조 : if [ 조건문 ] ; then
# fi, 공백 필수!!!
# if, elif문에는 반드시 then이 있어야 하고, else에는 then이 없어야 한다.
# [ 조건문 ] 옵션
#     - 숫자 비교
#         $A -eq $B ; ==
#         $A -ne $B ; !=
#         $A -gt $B ; >
#         $A -ge $B ; >=
#         $A -lt $B ; <
#         $A -le $B ; <=
#     - 파일
#         -e $FILE  ; exist file, size > 0
#         -f $FILE  ; file?
#         -d $FILE  ; directory?
#         -w $FILE  ; accept write
#         -r $FILE  ; accept read
#    - 문자열
#         $A = $B   ; ==
#         $A != $B  ; !=
#         -z $A     ; length == 0
#         -n $A     ; length != 0
if [ input = "test" ]
    then echo "result : $input"
elif [ input = "aaa" ]
    then echo "result : $input"
else
    echo "ERROR"
fi
 
### case
# 구조 : case 변수 in
# esac 필수!!!
# 모든 조건 미충족시 *) 실행
case $input in
    1)
        echo "input 1"
        ;;
    2)
        echo "input 2"
        ;;
    *)
        echo "input error"
        ;;
esac
 
##### 반복문
# do, done, 공백 필수!!!
### for
# 구조 : for 변수 in 갯수
for CNT in 1 2 3 4 5
do
    echo $CNT
done
 
### while
# 구조 : while [ 조건 ]
# while 1  or  while true  ; 무한 루프
cnt=1
while [ cnt -le 5 ]
do
    echo $cnt
    cnt=`expr $cnt + 1`
done
 
### until
# 구조 : until [ 조건 ]   ; while 반대
until [ $input == "hello" ]
do
    echo "input hello"
done
 
 
##### 함수
# 구조 : 함수명() {}
# 함수 사용시에는 함수명만 쓰면 됨!
menu_print() {
    echo "this is menu"
}
menu_print
 
 
##### echo
# echo `last` 와 같이 실행할 경우 개행이 되지 않는다.
echo `last`
# 여러줄의 명령어를 변수에 넣거나 echo할 경우 ""를 붙여주면 된다.
echo "`last`"
 
##### continue, break
# C 언어와 동일

 

 

Back To Top