1. Shell Script
- 자동화 프로그램 만들 때 사용
- 확장자 : .sh
- 실행법
1 2
$ source [File Name].sh $ ./go.sh # 실행권한 줘야함, 간헐적으로 사용
CLI Shell 여러 가지 존재- bash, dash 등등 …
bash : 기능 많음, 주로 리눅스
dash : 경량, 임베디드에 많이 씀
shell 확인법 : $cat /etc/shells
2. 작성 문법
1. Shebang(쉬뱅, #!)
- 파일 맨위에 작성
- 어느 Shell 인지 나타냄
1 2
#!/bin/bash (bash shell) #!/bin/sh (dash shell)
2. 출력 & 입력
- 출략 : echoㅤㅤㅤ입력 : read
3. 변수
- 모든 값을 문자열로 취급
1
2
3
4
5
6
7
8
9
#!/bin bash
# 선언
변수명=값
NAME=ZIVALLO
# 변수 사용
$변수명
echo "My name is "$NAME
4. Argument
- 받은 Argument를 $1, $2, $3 … 로 사용가능
1
2
3
4
5
6
#!/bin bash
# Argument 사용
echo $1
echo $2
echo $3
5. 산술 연산
- $(( )) 사용
1
2
3
#!/bin bash
echo $(($1+$2))
6. 한줄 주석
1
# 한줄 주석
7. 실행결과 변수 저장
- 변수명=$(Shell 명령어)
1
2
3
#!/bin bash
echo $(date)
8. if문1
- 띄어쓰기 중요
- 비교식
비교식 | 의미 | 비교식 | 의미 |
---|---|---|---|
-lt | <(less than) | -gt | >(greater than) |
-le | <= | -ge | >= |
-eq | = | -ne | != |
|| | or | && | and |
- 파일 관련 조건식
조건식 | 의미 | 조건식 | 의미 |
---|---|---|---|
-n “문자열” | 문자열길이 > 0 일때 | -z “문자열” | 문자열길이 == 0 일때 |
-x “파일” | 파일 존재, 권한 실행(+x) 일때 | -f “파일” | 파일 존재, Ruguler 파일 일때 |
1
2
3
4
5
6
7
8
9
10
11
#!/bin bash
a=$1
if [ $a = "100" ];then
echo first
elif [ $a -eq "200" ];then
echo second
else
echo third
fi
for, printf, 함수, 배열 사용 가능하지만 자주 사용하지 않음.
3. Environmet Variable(환경 변수)
- Shell 에 저장되는 변수 (사용자, Process, 리눅스 등 다같이 사용)
- 터미널 종료시 없어짐 -> ~/.bashrc2 에 추가
1
2
3
4
5
6
7
8
9
10
11
12
# 환경 변수 전체 읽기
$ printenv
# 하나만 읽기
$ echo $변수명
$ printenv | grep [변수명]
# 변수 저장
export [변수명]=[값]
# 변수 제거
unset [변수명]
4. alias
- 별명을 만들어내는 명령어
1 2
alias f1='mkdir ./ziv;ls' alias f2='rm -r ./ziv;ls'
5. Crontab
- 주기적으로 Shell Script 파일 수행시켜야 할때 사용
- Shell Script 파일 작성
- sh 파일에 +x 실행권한 주기
1
$ sudo chmod +x ~/test.sh
- /etc/crontab 파일에 추가
1
$ sudo vi /etc/crontab
표현식 의미 * * * * * 매 분마다 수행 */5 * * * * 매 5분마다 수행 * */5 * * * 매 5시간마다 수행 * 8 * * * 매일 8시마다 수행
bash shell이 시작될때 자동 시작되는 bash script 파일 ↩