업무 특성 상 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
  • 별도 포스팅으로 상세하게 다루도록 하겠습니다

입출력 관리

#!/bin/bash

kill -9 ${PID}

if [ $? -eq 0 ]; then
    ....
fi

./test_binary << EOF
...
EOF
  • 명령어 처리가 가능한 쉘 스크립트이므로, 입출력 관리 또한 지원
  • 별도 포스팅으로 상세하게 다루도록 하겠습니다