set -e
여기서는 행동이 다릅니다
set -e;
function foo {
}
그리고
function foo {
set -e;
}
set -e
함수 내부에 속합니까? 함수 외부에서 선언하면 set -e
셸 파일 내부의 "중첩" 함수에 영향을 미치나요? 그 반대는 어떻습니까? 전화할까 local set -e
ㅋㅋㅋ
답변1
참고: 여기 설명은 Bash 버전 4.0.35 이상에 적용됩니다. 구현set -e
다양한 쉘/버전 간의 큰 차이. 따르다스티븐의 조언그리고 그것을 사용하지 마십시오 set -e
.
man bash
Shell 내장 명령/ 섹션 set
의 내용은 잘 설명되어 있지만 텍스트가 약간 조밀하고 약간의 집중이 필요합니다. 귀하의 특정 질문에 대한 답변은 다음과 같습니다.
- 뭔가 다른 일을 해보세요
set -e
...함께..- "다르다"는 말의 의미에 따라 다르지만, 까다로운 범위 지정 규칙 없이 대답은 "아니요"라고 생각할 것 같습니다. 이는 매우 선형적으로 작동합니다. - set -e가 함수 내부에 속합니까?- 전적으로 유효합니다.
- 함수 외부에서 선언된 set -e가 쉘 파일 내부의 "중첩" 함수에 영향을 줍니까?- 예
- 그 반대는 어떻습니까?-함수 에서
set -e
반환 후 0이 아닌 상태가 발생합니까? 예, 종료됩니다.
답변2
두통을 예방하는 솔루션:
function foo {
(
set -e;
)
}
(그냥 서브쉘을 사용하세요) 때로는 혼란스럽고 예쁘게 만들기 위해 다음과 같이 합니다.
function foo {(
set -e;
# the rest goes here
)}