업무 특성 상 Shell script를 많이 사용하고 있습니다
그래서 이에 대한 정리를 해보고자 합니다
[참고] 여기에서 설명하는 쉘 스크립트는 Linux / Unix 계열 운영체제와 관련된 내용만 작성합니다.
Shell script란?
- 명령어를 실행하는 스크립트 언어
- 사용자가 수행하는 명령어들을 자동화함으로써 효율성이 증가
- 반복성을 띠는 배치 처리 작업이나 운영 체제와 연관된 파일/디렉토리 처리 작업에 주로 사용
- 프로그래밍 언어와 동일한 성격의 문법들이 존재
- 변수, 함수, 반복문, 조건문 등등...
- 일부 문법들은 shell의 종류에 따라 지원되지 않을 수 있음
Shell script의 기본 구성
shebang
#!/bin/bash <- 이 부분이 shebang
...
스크립트를 어떤 인터프리터로 실행할지 지칭하는 역할
POSIX shell로 수행할 경우
#!/bin/bash
, bash로 수행할 경우#!/bin/bash
로 작성shell이 아닌 다른 인터프리터도 지정할 수 있다. 만약 다음과 같이 작성한다면?
#!/bin/python ...
스크립트 파일은 맞으나 인터프리터를 파이썬으로 지정했기 때문에 shell script는 아니고 python script이다!
변수
#!/bin/bash
BLOG_URL="yaaam.tistory.com"
test_function() {
local blog_url="yaaam.tistory.com"
}
- 지역 변수와 전역 변수 2개의 유형으로 나뉘어져 있음
- 별도 포스팅으로 상세하게 다루도록 하겠습니다
함수
#!/bin/bash
add() {
return $1+$2;
}
- 일반적인 프로그래밍 언어와 동일하게
- 매개변수 전달 가능
- 값 리턴 가능
- 별도 포스팅으로 상세하게 다루도록 하겠습니다
조건문
#!/bin/bash
if [ -f '/root/test.txt' ]; then
echo "File exists"
fi
- Shell script의 특성상 파일/디렉토리와 관련된 키워드가 존재
- 여러 형태의 조건문이 있으며 일부 조건문은 특정 shell 인터프리터에서 해석 불가
- 별도 포스팅으로 상세하게 다루도록 하겠습니다
반복문
#!/bin/bash
for i in {1..5}
do
echo "Number: $i"
done
- 일반적인 프로그래밍 언어와 동일하게 for문 / while문 존재
- 별도 포스팅으로 상세하게 다루도록 하겠습니다
매개 변수
#!/bin/bash
INPUT=$0
- 함수로 전달하는 매개변수가 아니라 shell script 실행 시 매개변수를 입력 가능
- ex :
./test.sh 100 10
- ex :
- 별도 포스팅으로 상세하게 다루도록 하겠습니다
입출력 관리
#!/bin/bash
kill -9 ${PID}
if [ $? -eq 0 ]; then
....
fi
./test_binary << EOF
...
EOF
- 명령어 처리가 가능한 쉘 스크립트이므로, 입출력 관리 또한 지원
- 별도 포스팅으로 상세하게 다루도록 하겠습니다