쉘 스크립트는 명령어를 나열해 실행하는 실행문을 뜻하며 미리 작성해놓은 파일을 통해 여러 명령어를 차례로 실행시키는 용도로 사용된다.
쉘 스크립트 파일은 기본적으로 .sh 확장자로 작성한다.
ex) script.sh
파일의 맨 첫 줄에는 사용할 명령 인터프리터를 지정해준다.
ex) #!/bin/bash
#문자 입력시 코멘트 처리할 수 있다.
read [사용할 변수명]
: 사용자로부터 데이터를 입력받아 스크립트 내의 변수로 사용할 수 있다.
echo [출력할 내용]
: 사용자의 커맨드 창에 출력할 내용을 출력한다.
[명령어] > [파일]
: 명령어의 결과를 파일에 출력한다.(덮어쓰기)
[명령어] >> [파일]
: 명령어의 결과를 파일에 마지막 줄에 추가한다.(삽입)
[명령어] < [파일]
: 파일의 값을 명령어에 전달한다.
스크립트 내에 변수는 다음과 같이 선언한다.
var = "123"
변수의 이름으로는 영문자, 숫자 그리고 언더바만 사용할 수 있다.
변수를 사용 할때는 $표시를 앞에 붙이고 {}로 감싸 사용한다.
echo ${var} >>> 123
명령어의 결과값을 변수로 이용할 때에는 $()를 이용한다.
var = $(hostname -s)
변수의 값이 변경되는 것을 방지하기 위해 readonly를 사용할 수 있다.
readonly var
스크립트가 실행되어 종료된 후에 출력되는 코드를 뜻하며 정상적으로 종료되었을 경우에는 0, 이외에는 전부 비정상 종료를 뜻한다.
따라서 이후 스크립트 정상 작동 여부를 확인하기 위해 사용하며 exit [종료코드]
를 사용해 직접 설정할수도 있다.
echo $?
스크립트 내에서 반복되는 내용을 처리할때 사용하며 사용방법은 아래와 같다.
for VAR in LIST; do
COMMAND VARIABLE
done
LIST에 들어있는 값의 수 만큼 반복하여 각각의 값을 VAR라는 변수로 사용한다.
ex) for HOST in host{1..3}; do echo $HOST; done
스크립트 내에서 조건에 따라 분기 처리할때 사용하며 사용방법은 아래와 같다.
조건식
: 조건문에서 논리 테스트하거나 값을 비교할때 사용하며 [[ ]]로 감싸 사용한다.
gt(>), ge(≥), eq(=), le(≤), lt(<)
ex) [[ 1 -eq 1 ]]; echo $
ex2) [[ 1 != 1 ]]; echo $?
if/then 구문
if <CONDITION>; then
<STATEMENT>
...
<STATEMENT>
fi
if <CONDITION>; then
<STATEMENT>
...
<STATEMENT>
else
<STATEMENT>
...
<STATEMENT>
fi
if <CONDITION>; then
<STATEMENT>
...
<STATEMENT>
elif <CONDITION>; then
<STATEMENT>
...
<STATEMENT>
else
<STATEMENT>
...
<STATEMENT>
fi