[linux] Bash 스크립트를 실행하지 않고 구문을 확인하려면 어떻게합니까?

bash 스크립트 구문을 실행하지 않고 확인할 수 있습니까?

Perl을 사용하여 실행할 수 있습니다 perl -c 'script name'. bash 스크립트에 해당하는 명령이 있습니까?



답변

bash -n scriptname

아마도 명백한주의 사항 : 이것은 구문의 유효성을 검사하지만 bash 스크립트가 경로 ech hello대신에 없는 명령을 실행하려고하는지 확인하지 않습니다 echo hello.


답변

시간은 모든 것을 바꿉니다. 다음은 쉘 스크립트에 대한 온라인 구문 검사를 제공 하는 웹 사이트 입니다.

일반적인 오류를 감지하는 것이 매우 강력하다는 것을 알았습니다.

여기에 이미지 설명을 입력하십시오

ShellCheck에 대하여

ShellCheck 는 sh / bash 스크립트를위한 정적 분석 및 보푸라기 도구입니다. 주로 초급 및 중급 구문 오류와 함정을 다루는 데 중점을 둡니다. 쉘은 단순한 오류 메시지 또는 이상한 동작을 제공하지만 코너 케이스가 지연된 오류를 일으킬 수있는 몇 가지 고급 문제에 대해서도보고합니다.

하스켈 소스 코드는 GitHub에서 구할 수 있습니다!


답변

또한 추가 검사를 수행하기 위해 작성한 모든 bash 스크립트에서 ‘u’옵션을 활성화합니다.

set -u 

다음 스크립트 ‘check_init.sh’와 같이 초기화되지 않은 변수의 사용법을보고합니다.

#!/bin/sh
set -u
message=hello
echo $mesage

스크립트 실행 :

$ check_init.sh

다음을보고합니다.

./check_init.sh[4] : 메시지 : 매개 변수가 설정되지 않았습니다.

오타를 잡는 데 매우 유용


답변

sh  -n   script-name 

이것을 실행하십시오. 스크립트에 구문 오류가 있으면 동일한 오류 메시지를 반환합니다. 오류가 없으면 메시지를 표시하지 않고 나옵니다. 을 사용하여 즉시 확인할 수 있으며 실수없이 성공적으로 확인 echo $?을 반환 0합니다.

그것은 나를 위해 잘 작동했습니다. Linux OS Bash Shell에서 실행했습니다.


답변

실제로 find도구를 사용하여 실행하지 않고 구문 오류가 있는지 현재 디렉토리의 모든 bash 스크립트를 확인합니다 .

예:

find . -name '*.sh' -exec bash -n {} \;

단일 파일에 사용하려면 파일 이름으로 와일드 카드를 편집하십시오.


답변

null 명령 [콜론]은 변수 값을 확인하기 위해 디버깅 할 때도 유용합니다.

set -x
for i in {1..10}; do
    let i=i+1
    : i=$i
done
set - 


답변

BashSupport 플러그인 에 대한 하게 IntelliJ IDEA 하는 검사 구문.