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 -