갖고 있다고 할 수 있어요apple.sh
set -e
...some commands #X...
./banana.sh
...more commands #Y..
그런 다음banana.sh
set -e
...some commands #Z...
내 예상으로는 의 어딘가에서 오류가 발생하면 오류 상태로 종료 banana.sh
되므로 오류도 보고 종료될 것입니다. 이런 행동을 본 적도 있는 것 같아요. 그러나 이제 오류가 발생하면 예상대로 종료되지만 거기에서 "일부 명령 #Y" 항목을 계속 실행하지만 이것이 사실이 아니라는 것을 알았습니다 .banana.sh
apple.sh
banana.sh
apple.sh
오류가 banana
팝업으로 표시되도록 하려면 어떻게 해야 합니까 apple
?
이것은 RHEL5에 있습니다
답변1
귀하의 경우가 아닐 수도 있지만 banana.sh
무시되는 특정 상황에서 전화하고 있습니까?-e
존재하다배쉬 참조 매뉴얼이러한 유형의 컨텍스트에 대한 자세한 설명을 읽을 수 있으며, 여기서 중요한 정보는 다음과 같습니다.
-e를 생략한 컨텍스트에서 복합 명령 또는 셸 함수가 실행되는 경우 -e가 설정되고 명령이 오류를 반환하더라도 복합 명령 또는 함수의 본문 내에서 실행되는 모든 명령은 -e 설정의 영향을 받지 않습니다. 상태. -e를 생략한 컨텍스트에서 복합 명령이나 쉘 함수가 실행될 때 -e를 설정하면 함수 호출이 포함된 복합 명령이나 명령이 완료될 때까지 설정이 적용되지 않습니다.
이는 다음과 같은 경우를 의미합니다 apple.sh
.
set -e
func() {
echo '...some commands #X...'
false # Suppose ./banana.sh fails here
echo '...some commands #Y...'
true
}
if func; then
echo 'func() returns success'
else
echo 'func() returns failure'
fi
다음과 같은 결과가 출력됩니다.
...some commands #X...
...some commands #Y...
func() returns success
bash뿐만 아니라 dash 및 zsh를 포함한 다른 쉘도 동일한 결과를 제공합니다.
귀하의 질문에 대답하려면 적어도 bash에서는 동작을 변경할 수 있는 방법이 없는 것 같습니다.