OS/LINUX

7. 쉘 스크립트

by coldplayer83 2026. 3. 25.
728x90
반응형

일련의 쉘 명령어들을 순차적으로 실행할 수 있도록 작성한 것
=> 재사용성, 안정성

| : 파이프라인 왼쪽의 명령결과 표준스트림을 오른쪽 명령의 입력으로 사용
; : 세미콜론 왼쪽의 명령이 끝난 후 이어서 세미콜론 오른쪽의 명령을 실행

AND 조건 (&&)
- a

OR 조건 (||)
- o

unix계열 기본 탑재 명령어가 있는 root directory => bin
ls /bin으로 확인 가능

쉘 스크립트 작성시 상단

 


 

조건문if

# 대괄호 안쪽 조건문 양옆 한 칸 띄우기
# then을 아래줄로 옮겨 작성하면 ; 안써도 됨

if [ 조건문1 ]; then 
	조건문1이 참일 때 실행할 명령어
elif [ 조건문2 ]; then # 필요시 추가 가능
	조건문1은 거짓이고 조건문2가 참일 때 실행할 명령어
else
	조건문1,2가 모두 거짓일 경우 실행할 명령어
fi

 

# bak 디렉토리가 없으면 만들고 *.log를 bak에 복사하는 예시

#!/bin/bash
if ! [ -d bak ]; then
	mkdir bak
fi
cp *.log bak

 

 


 

조건문 case

case 변수 in
패턴1)
	패턴1이 참일 때 실행할 명령어;;
패턴2)
	패턴2가 참일 때 실행할 명령어;;  <-- 필요시 추가
*)
	위에서 지정한 모든 패턴에 해당이 안되는 경우 실행할 명령어;;
esac

 

#!/bin/bash

## ./nginx_ctl.sh start  		: nginx start
## ./nginx_ctl.sh stop   		: nginx stop
## ./nginx_ctl.sh reload 		: nginx reload
### ./nginx_ctl.sh configtest   : nginx.conf의 문법을 확인
### ./nginx_ctl.sh a b c 라고 치면
### $1은 a, $2는 b, $3은 c로 인식

# 위와 관련된 case문 작성 예시

CMD=$1

case "${CMD}" in
start)
        NGINX START;;
stop)
        NGINX STOP;;
reload)
        NGINX RELOAD;;
configtest)
        NGINX CONFIG CHECK;;
*)
        echo "how to use: ./nginx_ctl.sh {start|stop|reload|configtest}";;
esac

 


 

함수 function

function 함수명 {
	명령어
}

또는

함수이름 () {
	명령어
}

 

예시1)

#!/bin/bash

function line {
        echo "======================"
}

line
echo "df 결과입니다"
line
df -h
line
echo "free 결과입니다"
line
free -m
line

 

실행 결과)

 

예시2)

#!/bin/bash
# plus 1 2
# 1 + 2 =
function plus {
        echo "$1 + $2 = "
        echo $[ $1 + $2 ]
        echo
}

plus 30 40

 

실행 결과)

 


 

배열 array

숫자 또는 문자 사용 가능

쉘 스크립트에서는 잘 사용하지 않음

#!/bin/bash

array=(a b c d e f)

#배열의 첫번째만 호출됨
echo $array

#배열 전체 출력
echo ${array[@]}

#배열 0번째부터 5개 요소 출력
echo ${array[@]:0:5}

#0번째부터 5번째까지 출력하는 for문
for i in $(seq 0 5);
do
        echo ${array[$i]};
done

 

실행 결과)

 


 

반복문 for 

for 변수 in 범위
do
  # 명령
done

in 뒤의 범위에는 조건문이나 배열이 올 수 있음

 

#!/bin/bash

for var in A B C D E
do
  echo $var
done

 

실행 결과)

 

#!/bin/bash
list="A B C D E F G"

for var in $list
do
  echo $var
done

 

실행 결과)

728x90
반응형

'OS > LINUX' 카테고리의 다른 글

9. 백그라운드 실행(nohup, kill)  (0) 2026.04.02
8. 프로세스 모니터링 (top, htop)  (0) 2026.04.01
6. 쉘과 커널  (0) 2026.01.16
curl 옵션  (0) 2025.11.18
5. IO Redirection (<,<<,>,>>)  (0) 2025.11.10

TOP

Designed by 티스토리