쉘체크 bash/sh 셸 스크립트의 잘못된 코드에 대한 경고 및 제안을 표시하는 정적 분석 도구입니다. 여러 가지 방법으로 사용할 수 있습니다. 웹에서 https://www.shellcheck.net의 온라인 편집기(Ace – JavaScript로 작성된 독립 실행형 코드 편집기)에 셸 스크립트를 붙여넣습니다(항상 최신 git과 동기화됨 커밋하고 ShellCheck에 즉각적인 피드백을 제공하는 가장 간단한 방법입니다.
또는 컴퓨터에 설치하고 터미널에서 실행하고 텍스트 편집기와 빌드 또는 테스트 제품군과 통합할 수 있습니다.
ShellCheck는 주로 다음 세 가지 작업을 수행합니다.
- 쉘이 수수께끼 같은 오류 메시지를 표시하게 하는 일반적인 초보자의 구문 문제를 지적하고 설명합니다.
- 쉘이 이상하고 직관적이지 않게 동작하도록 하는 일반적인 중급 수준의 의미론적 문제를 지적하고 설명합니다.
- 또한 향후 상황에서 고급 사용자의 작업 스크립트가 실패할 수 있는 미묘한 주의 사항, 코너 케이스 및 함정을 지적합니다.
이 기사에서는 Linux의 셸 스크립트에서 버그나 잘못된 코드를 찾는 다양한 방법으로 ShellCheck를 설치하고 사용하는 방법을 보여줍니다.
Linux에서 ShellCheck를 설치하고 사용하는 방법
쉘체크 그림과 같이 패키지 관리자를 통해 로컬로 쉽게 설치할 수 있습니다.
데비안/우분투에서
# apt-get install shellcheck
RHEL/CentOS에서
# yum -y install epel-release # yum install ShellCheck
Fedora에서
# dnf install ShellCheck
ShellCheck가 설치되면 앞에서 언급한 다양한 방법으로 ShellCheck를 사용하는 방법을 살펴보겠습니다.
웹에서 ShellCheck 사용
https://www.shellcheck.net으로 이동하여 제공된 Ace 편집기에 스크립트를 붙여넣으면 아래 스크린샷과 같이 편집기 하단에 출력이 표시됩니다.
다음 예에서 테스트 셸 스크립트는 다음 줄로 구성됩니다.
#!/bin/bash #declare variables MINARGS=2 E_NOTROOT=50 E_MINARGS=100 #echo values of variables echo $MINARGS echo $E_NONROOT exit 0;
위의 스크린샷에서 처음 두 변수 E_NOTROOT 및 E_MINARGS 선언되었지만 사용되지 않은 경우 ShellCheck는 이를 "오류 암시"로 보고합니다.
SC2034: E_NOTROOT appears unused. Verify it or export it. SC2034: E_MINARGS appears unused. Verify it or export it.
그런 다음 두 번째로 잘못된 이름(echo $E_NONROOT )은 변수 E_NOTROOT를 에코하는 데 사용되었습니다. , 이것이 ShellCheck가 오류를 표시하는 이유입니다:
SC2153: Possible misspelling: E_NONROOT may not be assigned, but E_NOTROOT is
다시 echo 명령을 볼 때 변수는 큰따옴표로 묶이지 않았으므로(글로빙 및 단어 분할을 방지하는 데 도움이 됨) Shell Check에서 경고를 표시합니다.
SC2086: Double quote to prevent globbing and word splitting.
터미널에서 ShellCheck 사용
명령줄에서 ShellCheck를 실행할 수도 있습니다. 위와 동일한 셸 스크립트를 다음과 같이 사용할 것입니다.
$ shellcheck test.sh
텍스트 편집기에서 ShellCheck 사용
ShellCheck도 볼 수 있습니다. 제안 및 경고를 다양한 편집기에서 직접 제공하므로 ShellCheck를 사용하는 더 효율적인 방법일 수 있습니다. 파일을 저장하면 코드의 오류가 표시됩니다.
Vim에서 , ALE 또는 Syntastic 사용(우리는 이것을 사용할 것입니다):
병원체 설치부터 시작 그래서 syntastic을 쉽게 설치할 수 있습니다. 아래 명령을 실행하여 pathogen.vim을 가져옵니다. 파일 및 필요한 디렉토리:
# mkdir -p ~/.vim/autoload ~/.vim/bundle && curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim
그런 다음 이것을 ~/.vimrc에 추가하세요. 파일:
execute pathogen#infect()
병원체를 설치하고 이제 syntastic을 ~/.vim/bundle에 넣을 수 있습니다. 다음과 같이:
# cd ~/.vim/bundle && git clone --depth=1 https://github.com/vim-syntastic/syntastic.git
그런 다음 vim을 닫고 다시 시작하여 다시 로드한 다음 아래 명령을 입력합니다.
:Helptags
모든 것이 잘되면 ShellCheck가 있어야 합니다. Vim과 통합 , 다음 스크린샷은 위의 동일한 스크립트를 사용하여 작동하는 방식을 보여줍니다.
위 단계를 수행한 후 오류가 발생한 경우 Pathogen을 설치하지 않았을 수 있습니다. 바르게. 단계를 다시 실행하되 다음을 수행했는지 확인하십시오.
- ~/.vim/autoload를 모두 생성했습니다. 및 ~/.vim/bundle 디렉토리.
- ~/.vimrc에 execute pathogen#infect() 라인 추가 파일.
- ~/.vim/bundle 내부에 syntastic의 git 복제가 있었습니까? .
- 위의 모든 디렉토리에 액세스하려면 적절한 권한을 사용하십시오.
다른 편집기를 사용하여 다음과 같은 셸 스크립트의 잘못된 코드를 확인할 수도 있습니다.
- Emacs에서 , 플라이체크 사용 .
- Sublime에서 SublimeLinter를 사용하세요.
- Atom에서 Linter를 활용하세요.
- 대부분의 다른 편집기에서는 GCC 오류 호환성을 사용합니다.
참고 :잘못된 코드 갤러리를 사용하여 더 많은 ShellChecking을 수행합니다.
ShellCheck Github 저장소:https://github.com/koalaman/shellcheck
그게 다야! 이 기사에서는 ShellCheck를 설치하고 사용하는 방법을 보여주었습니다. Linux의 셸 스크립트에서 버그나 잘못된 코드를 찾습니다. 아래 댓글 섹션을 통해 여러분의 생각을 공유해 주세요.
다른 유사한 도구를 알고 있습니까? 그렇다면 댓글에서도 그에 대한 정보를 공유하십시오.