.bashrc에서 오류 코드를 반환할 수 있는 명령

.bashrc에서 오류 코드를 반환할 수 있는 명령

.bashrc오류 코드를 반환할 수 있는 명령의 출력과 동일한 변수를 내부적으로 설정하고 싶습니다 .

나는 이런 일을 했을 때의 결과를 모른다. 이 명령이 실패하더라도 다른 모든 것은 잘 작동합니까?

현재 코드는 .bashrc간단합니다.

export MYVAR=$(my_dubious_command 2>/dev/null)

이거 안전한가요?

답변1

해 보자:

$ var=$(false)
$ echo $?
1
$

그러나 .bashrc에 이를 설정할 가능성은 거의 없으며 errexit다음 명령은 명령의 종료 코드를 확인할 가능성이 훨씬 낮으므로 아무 영향도 미치지 않습니다.

.bashrc와 같은 시작 스크립트는 수행할 수 있는 작업 중 하나입니다.아니요set -o errexit간단한 오타나 제어할 수 없는 변경으로 인해 셸에서 차단될 수 있으므로 이 작업을 수행하고 싶습니다 . 오류를 감지하지만 실패하지 않으려면 다음과 같이 오류를 잡을 수 있습니다.

$ trap 'echo $?' ERR
$ var=$(false)
1
$

이는 매우 유용합니다.빠르게, 예를 들어.

답변2

asl0b0설명하다, .bashrc가 errexitset으로 실행될 가능성은 없지만 테스트를 통해 이 경우를 처리할 수 있습니다.

case $SHELLOPTS in
  (*errexit*)   set +e;
                export MYVAR=$(my_dubious_command 2>/dev/null);
                set -e
                ;;
  (*)           export MYVAR=$(my_dubious_command 2>/dev/null)
                ;;
esac

작성된 대로 명령 은 후속 명령 이 잘못된 옵션을 제공하지 않았는지, 변수 이름이 유효하고 존재하지 않는 함수를 내보내지 않았는지 export확인하는 경우 0을 반환해야 합니다 .$?

Case 문은 errexit설정되어 있는지 확인하고, 설정되어 있으면 일시적으로 꺼서 실행합니다 my_dubious_command.

관련 정보