Bash Shell "noexec" 옵션 사용 목적

Bash Shell "noexec" 옵션 사용 목적

-n 실행하지 않음;명령을 읽고 구문을 확인하지만 실행하지는 않습니다.


"가 필요한 경우에 대한 예를 들어주실 수 있나요?실행되지 않음"Bash 옵션 중 하나는 무엇입니까?

누군가 이 옵션을 올바르게 사용하는 방법에 대한 예를 들어줄 수 있습니까?

답변1

file먼저, 지정된 파일이 디렉터리에 존재하지 않는지 확인하세요.

이것을 만드십시오 syntaxErr.bash:

echo X > file
for i in a b c;
    echo $i >> file
done

보시다시피 dofor 루프 뒤에 오는 내용이 누락되었습니다. 지금 무슨 일이 일어나는지 보세요:

$ bash -n syntaxErr.bash
syntaxErr.bash: line 4: syntax error near unexpected token `echo'
syntaxErr.bash: line 4: `    echo $i >> file' 
$ cat file
cat: file: No such file or directory
$ bash syntaxErr.bash
syntaxErr.bash: line 4: syntax error near unexpected token `echo'
syntaxErr.bash: line 4: `    echo $i >> file'
$ cat file
X

따라서 구문 오류 피드백을 얻기 위해 실제로 명령을 실행할 필요가 없습니다. 매우 중요한 작업을 수행하는 경우 모든 구문 오류가 수정될 때까지 스크립트를 실행하고 싶지 않을 것입니다.

참고: ctafind.bash이는아니요구문 오류가 있습니다:

echo X > file
cta file
find . -type z

cat철자가 틀렸으며 ctaz 유형 파일이 없습니다 find. 이 플래그를 사용하여 Bash를 실행하면 오류가 보고되지 않습니다 -n.

$ bash -n ctafind.bash 
$ bash ctafind.bash 
ctafind.bash: line 2: cta: command not found
find: Unknown argument to -type: z

결국, Bash는 실행 파일이 있는지 cta, 외부 명령에 어떤 옵션이 허용되는지 미리 알 수 있는 방법이 없습니다.

관련 정보