Programming/OS, Program, Framework Tip

ShellCheck - 쉘(e.g. 배쉬) 스크립트 문법 검사 툴

awesometic 2018. 1. 24. 14:25
반응형

Shell Script

보통 반복되는 명령어들을 자동화시키고 싶을 때 쉘 스크립트를 짜곤 합니다.

저도 종종 짜서 사용하곤 하는데, 쉘 스크립트라는 게 참 가독성이 기가 막혀요. 조금만 복잡해지면 알아보기가 어려워집니다. 물론 저같은 초보자한테는요.

그래서 아 컴파일러처럼 쉘 스크립트도 문법을 검사할 수 없나? 싶어서 찾아본 프로그램입니다. 굉장히 편리하고, 놓칠 수 있는 실수를 잘 잡아주네요 :)


ShellCheck

ShellCheck는 정적 분석 도구입니다. 정적 분석이란 프로그램이 실행되기 전에 소스 코드와 리소스만으로 분석하는 걸 말해요. 프로그램이 실행되며 여러 환경에 영향을 끼치는 걸 파악하고, 메모리를 보고 분석하는 건 동적 분석이라고 합니다.

정적 분석 도구는 사용하기 쉽다는 장점이 있는데, 이런 소스 코드 문법 검사같은 행위에 아주 잘 어울리죠. 공식 홍보 사진(?)을 보세요.

이렇게 단순한 명령어 실행만으로 문법 검사가 완료됩니다.

설치해볼게요. 설치도 간단히 패키지 관리자를 이용하시면 됩니다.

sudo apt install shellcheck

사용법을 볼게요. 잘못된 옵션을 주거나 아무 인수를 주지 않으면 나오네요.

awesometic@odroid-nas:~$ shellcheck
No files specified.

Usage: shellcheck [OPTIONS...] FILES...
  -e CODE1,CODE2..  --exclude=CODE1,CODE2..  exclude types of warnings
  -f FORMAT         --format=FORMAT          output format
  -s SHELLNAME      --shell=SHELLNAME        Specify dialect (bash,sh,ksh)
  -V                --version                Print version information

예시로 제가 작성한 트랜스미션 관련 자동화 툴을 검사해보면,

저렇게 노란 부분은 고쳤으면 한다 하는 거고, 초록 부분은 안 고쳐도 되지만 알아둬라 이런 의미인 것 같아요. 아예 틀리면 빨간 부분도 나오는데, 그건 고쳐야만 하는 부분이예요.

줄 번호도 함께 표시되니까,

vi transmission_done_script.sh +55

이렇게 줄번호로 한 번에 찾아가서 고쳐주면 되겠죠 :)

모두 shellcheck와 함께 편안한 쉘 스크립트 코딩 되시길 바랍니다.


참고

반응형