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 |