Bash 스크립트를 실행하지 않고 구문을 확인하려면 어떻게 해야 합니까?
실행하지 않고 bash 스크립트 구문을 확인할 수 있습니까?
Perl을 사용하여 실행할 수 있습니다.perl -c 'script name'bash 스크립트에 해당하는 명령이 있습니까?
bash -n scriptname
아마도 명백한 경고일 것입니다. 이것은 구문을 검증하지만 bash 스크립트가 경로에 없는 명령을 실행하려고 하는지 확인하지 않습니다.ech hello대신에echo hello.
시간은 모든 것을 바꿉니다.셸 스크립트에 대한 온라인 구문 검사를 제공하는 웹 사이트입니다.
일반적인 오류를 감지하는 것이 매우 강력하다는 것을 알게 되었습니다.

셸 검사 정보
ShellCheck는 sh/bash 스크립트를 위한 정적 분석 및 린트 도구입니다.주로 셸이 암호화된 오류 메시지나 이상한 동작을 제공하는 일반적인 초급 및 중급 수준 구문 오류와 함정을 처리하는 데 중점을 두지만, 코너 케이스가 지연된 실패를 야기할 수 있는 몇 가지 고급 문제에 대해서도 보고합니다.
Haskell 소스 코드는 GitHub에서 사용할 수 있습니다!
또한 추가 검사를 수행하기 위해 작성하는 모든 bash 스크립트에서 'u' 옵션을 활성화합니다.
set -u
다음 스크립트 'check_init'과 같이 초기화되지 않은 변수의 사용을 보고합니다.쉬'
#!/bin/sh
set -u
message=hello
echo $mesage
스크립트 실행:
$ check_init.sh
다음을 보고합니다.
./check_init.sh[4]: 메시지:매개 변수가 설정되지 않았습니다.
오타를 잡는 데 매우 유용합니다.
sh -n script-name
이걸 실행합니다.스크립트에 구문 오류가 있으면 동일한 오류 메시지를 반환합니다.오류가 없으면 메시지를 주지 않고 나옵니다.다음을 사용하여 즉시 확인할 수 있습니다.echo $?돌아올 것입니다.0실수 없이 성공을 확인하는 것.
저한테는 잘 맞았습니다.리눅스 OS, Bash Shell에서 실행했습니다.
실제로 현재 dir에 있는 모든 bash 스크립트에서 구문 오류가 있는지 확인합니다.find도구:
예:
find . -name '*.sh' -print0 | xargs -0 -P"$(nproc)" -I{} bash -n "{}"
단일 파일에 사용하려면 파일 이름으로 와일드카드를 편집하면 됩니다.
null 명령 [dll]은 변수의 값을 확인하기 위해 디버깅할 때도 유용합니다.
set -x
for i in {1..10}; do
let i=i+1
: i=$i
done
set -
구문의 유효성만 검사하는 경우:
셸 검사 [programPath]
구문이 통과한 경우에만 프로그램을 실행하는 경우, 구문과 실행을 모두 디버깅합니다.
셸프루프 [programPath]
구문 검사를 사용하도록 설정한 경우 Bash 셸 스크립트가 구문 검사를 실행합니다.
set -o noexec
구문 검사를 해제하려면
set +o noexec
구문을 확인하는 IntelliJ IDEA용 BashSupport 플러그인이 있습니다.
변수에 디렉터리의 모든 파일(git 사전 커밋 후크, 빌드 린트 스크립트)의 유효성이 필요한 경우 변수에서 "sh-n" 또는 "bash-n" 명령의 stderr 출력(다른 답변 참조)을 포착하고 이를 기반으로 "if/else"를 가질 수 있습니다.
bashErrLines=$(find bin/ -type f -name '*.sh' -exec sh -n {} \; 2>&1 > /dev/null)
if [ "$bashErrLines" != "" ]; then
# at least one sh file in the bin dir has a syntax error
echo $bashErrLines;
exit;
fi
필요에 따라 "sh"를 "bash"로 변경
언급URL : https://stackoverflow.com/questions/171924/how-do-i-syntax-check-a-bash-script-without-running-it
'programing' 카테고리의 다른 글
| mongoDB 접두사 와일드카드: 전체 텍스트 검색($text) 검색 문자열이 있는 부분 찾기 (0) | 2023.05.17 |
|---|---|
| PostgreSQL 새 줄 문자 (0) | 2023.05.17 |
| jQuery 유효성 검사: 기본 오류 메시지 변경 (0) | 2023.05.17 |
| 깃 풀을 푸는 방법은? (0) | 2023.05.12 |
| 에서 콘솔 응용 프로그램의 종료 코드를 지정하려면 어떻게 해야 합니까?NET? (0) | 2023.05.12 |