Computer >> 컴퓨터 >  >> 프로그램 작성 >> BASH 프로그래밍

ShellCheck – 셸 스크립트에 대한 경고 및 제안을 표시하는 도구

쉘체크 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;
ShellCheck – 셸 스크립트에 대한 경고 및 제안을 표시하는 도구 ShellCheck – 셸 스크립트에 대한 경고 및 제안을 표시하는 도구

위의 스크린샷에서 처음 두 변수 E_NOTROOTE_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 사용

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과 통합 , 다음 스크린샷은 위의 동일한 스크립트를 사용하여 작동하는 방식을 보여줍니다.

ShellCheck – 셸 스크립트에 대한 경고 및 제안을 표시하는 도구 ShellCheck – 셸 스크립트에 대한 경고 및 제안을 표시하는 도구

위 단계를 수행한 후 오류가 발생한 경우 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의 셸 스크립트에서 버그나 잘못된 코드를 찾습니다. 아래 댓글 섹션을 통해 여러분의 생각을 공유해 주세요.

다른 유사한 도구를 알고 있습니까? 그렇다면 댓글에서도 그에 대한 정보를 공유하십시오.