-e는 무엇을 설정합니까?


28

찾은 스크립트가 있고 실행하려고하는데 Apache 런타임 라이브러리를 다운로드하여 설치하면됩니다. 첫 번째 줄은 set -e오류입니다. 무엇을 set -e합니까?

답변:


22

이 내장은 너무 복잡하여 자체 섹션이 필요합니다.

set을 사용하면 쉘 옵션의 값을 변경하고 위치 매개 변수를 설정하거나 쉘 변수의 이름과 값을 표시 할 수 있습니다.

-e옵션

-이자형

단일 단순 명령 (단순 명령 참조), 괄호로 묶인 서브 쉘 명령 (명령 그룹화 참조) 또는 다음으로 묶인 명령 목록의 일부로 실행되는 명령 중 하나로 구성 될 수있는 파이프 라인 (파이프 라인 참조)이 있으면 즉시 종료하십시오. 중괄호 (명령 그룹화 참조)는 0이 아닌 상태를 반환합니다. 실패한 명령이 while 또는 until 키워드 바로 뒤에 나오는 명령 목록의 일부인 if 문의 테스트 부분, && 또는 ||에서 실행 된 명령의 일부인 경우 쉘이 종료되지 않습니다. 마지막 && 또는 || 뒤에 오는 명령, 파이프 라인의 마지막 명령이지만 마지막 명령 또는 명령의 반환 상태가!로 반전 된 경우를 제외하고 설정된 경우 ERR의 트랩은 쉘이 종료되기 전에 실행됩니다.

이 옵션은 쉘 환경과 각 서브 쉘 환경에 별도로 적용되며 (명령 실행 환경 참조) 서브 쉘에서 모든 명령을 실행하기 전에 서브 쉘이 종료 될 수 있습니다.

출처 : www.gnu.org

아래 @psusi의 의견으로 수정되었습니다.

또한 bash 매뉴얼 페이지를 읽을 수 있습니다

man bash 

섹션에서 : BUILTIN COMMANDS

또는 문제

help set 

짧은 도움말 메시지가 표시됩니다.


1
기본 제공 명령이므로 bash-doc이 설치된 경우 help set전체 bash 매뉴얼이 info bash있습니다.
psusi

설명 @psusi 주셔서 감사합니다. help set그리고 / 또는 man bash에 대한 올바른 것입니다 set.
NickTux

12

set -e 간단히 말해서 bash 스크립트의 맨 위에 있으면 스크립트의 행이 실패하자마자 스크립트가 종료되도록 지시합니다 (일부 예외는 매뉴얼에 나열되어 있음). [1]

디버깅 옵션으로 종종 set -x"+"기호로 실행하기 전에 확장 된 각 명령 줄을 인쇄하는 데 사용됩니다 . [2]

자세한 내용은 다음을 참조하십시오.

[1] https://www.peterbe.com/plog/set-ex

[2] http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html


2
간단한 설명 감사합니다. 나는 종종 Dockerfiles에서 set -xe를 보았고 이제 그 이유를 알고 있습니다 :)
ymakux
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.