2017-11-06 3 views
0

나는 기존의 Dockerfile에서 내 자신을 만들기 시작하는 것을 배우고 있습니다 Dockerfile. 나는 대부분의 시간은, 명령이 시작되는 것을 알 수 중Dockerfile에서 'set -x'는 무엇을합니까?

RUN set -x ... 

또는

RUN set -ex; ... 

이것은 왜합니까 왜이 필요하다? 그게 필요 할까?

+0

정말 프로그래밍에 관한 질문인지 잘 모르겠습니다. 또한 문서화에 대한 연구가 이러한 의심을 해결할 것으로 보인다. 질문을 편집하여 어떤 문서를 읽었는지 알려 주시고, 시도한 코드와 문제가있는 코드를 입력하십시오. –

답변

2

-e은 오류가 발생하면 명령을 중지합니다. 보다 일반적인 구문은 &&으로 명령을 분리하여 오류가 발생하지 않을 때 중지하는 것입니다.

-x은 셸이 실행중인 각 명령을 출력하도록합니다. 이것은 스크립트 디버깅에 유용합니다. 배쉬 매뉴얼 페이지에서

set 미만 :

-e 출구 (a 번의 간단한 명령으로 구성 될 수있다) 파이프 라인, 목록 또는 복합 명령 (상기 SHELL GRAMMAR 참조 즉시), 0이 아닌 상태로 종료합니다. 실패한 명령이 명령리스트의 일부인 경우 또는 키워드 until, if 또는 elif 예약어 다음에 오는 시험의 일부인 명령의 일부가 & &에서 실행되는 경우 쉘에서 이 종료되지 않습니다 또는 || 최종 & & 다음의 명령 또는 ||, 모든 명령 , 파이프 라인의 마지막 명령 또는 명령의 리턴 값이 반전 된 경우를 제외하고는! -e가 무시되는 동안 명령이 실패 했으므로 서브 쉘이 아닌 복합 명령이 0이 아닌 상태를 리턴하면 쉘은 종료하지 않습니다. ERR이 설정된 경우, 쉘이 종료되기 전에 이 실행됩니다. 이 옵션은 쉘 환경과 각 서브 쉘에 별도로 적용되며 위의 명령 실행 환경을 참조하십시오. 서브 쉘에서 모든 명령을 실행하기 전에 서브 쉘이 종료되어 을 종료 할 수 있습니다.

-e가 무시되는 컨텍스트에서 복합 명령 또는 셸 함수가 실행되는 경우 복합 명령 또는 함수 본문 내에서 실행 된 명령 중 은 -e가 설정되어 있어도 -e 설정의 영향을받지 않습니다. set 명령은 실패 상태를 리턴합니다. 또는 쉘 함수가 -e를 무시하는 컨텍스트에서 실행 중일 때 -e를 설정하면 복합 명령 또는 함수 호출을 포함하는 명령이 완료 될 때까지 해당 설정이 적용됩니다 ( ).

...

-x 명령 케이스 명령 선택 명령 또는 명령의 연산 , 각각 간단한 명령을 확대 한 후, PS4의 확장 값 명령 다음과는 확대 표시 인수 또는 관련 단어 목록.

+0

이제 의미가 있습니다 ... 감사합니다. –

관련 문제