쉘을 종료하지 않고 .bashrc 중지

쉘을 종료하지 않고 .bashrc 중지

내 .bashrc 파일은 모듈식이므로 확인하는 데 몇 가지 오류가 있습니다. Bash 스크립트에는 일반적으로 오류를 감지하고 종료하려고 할 때 호출하는 _errexit(또는 이와 유사한) 함수가 있습니다.

내 bashrc 파일의 경우 종료하고 싶지 않지만(셸이 닫힙니다) 오류 메시지를 표시하고 즉시 처리를 중지하고 싶습니다.

이 작업을 수행하는 방법에 대한 아이디어가 있습니까?

답변1

returnBASH에서는 내장된 기능을 사용할 수 있습니다 :

반품[n]

함수가 n으로 지정된 반환 값으로 종료되도록 합니다. n이 생략되면 반환되는 상태는 함수 본문에서 마지막으로 실행된 명령의 상태입니다. 함수 외부에서 사용되지만 .(소스) 명령 내에서 사용되면 쉘이 스크립트 실행을 중지하고 n 또는 스크립트 내에서 실행된 마지막 명령의 종료 상태를 스크립트의 종료 상태로 반환합니다. 스크립트 실행 중이 아닌 함수 외부에서 사용되는 경우 반환 상태는 false입니다. RETURN 트랩과 관련된 모든 명령은 함수나 스크립트 이후 실행이 재개되기 전에 실행됩니다.

물론 다른 쉘에서는 다르게 작동할 수도 있습니다.

기본 스크립트를 루프로 다시 작성할 수 있으면 break루프 명령의 결과를 기반으로 문을 사용할 수 있습니다.

답변2

처리 결과를 확인하고 장애가 없는 경우에만 계속 진행합니다.

module_1
if [ $? -ne 0 ]; then
   display_error_function
else
   module_2
   if [ $? -ne 0 ]; then
      display_error_function
   else
      echo OK
   fi
fi

모듈이 많은 경우 추가 셸 변수 사용을 고려하세요.
편집: 추가 변수를 사용하면 깊은 중첩을 방지할 수 있습니다(if 블록을 반복하기만 하면 됩니다).

ERRORSFOUND=0
...
if [[ ${ERRORSFOUND} -eq 0 ]]; then
   module_x
   if [[ $? -ne 0 ]]; then
      ERRORSFOUND=1
   fi
fi

관련 정보