grep이 bash 스크립트에서 EXIT 트랩을 발생시킵니다.

grep이 bash 스크립트에서 EXIT 트랩을 발생시킵니다.

bash 버전 3.2를 사용하여 OSX에서 다음 스크립트를 실행하는 경우

#!/bin/sh

set -e
function _trap_exit {
   echo "this is a triggered trap..."
}

trap _trap_exit EXIT

/usr/sbin/ioreg -w0 -l | grep ExternalChargeCapable | grep -q No

echo "Final statement"

함정을 발동시켰습니다. 그러나 최종 grep 문을 "yes"로 변경하면 grep -q Yes트랩이 실행되지 않습니다.

왜 이런 일이 발생하고 어떻게 중지할 수 있는지 아시나요? grep의 종료 코드로 인해 트랩이 트리거되는 이유는 무엇입니까?

답변1

Bash 매뉴얼 페이지에서 ...

-e      Exit immediately if a simple command (see SHELL GRAMMAR above) exits with a non-
        zero  status.   The shell does not exit if the command that fails is part of the
        command list immediately following a while or until keyword, part of the test in
        an  if  statement,  part of a && or || list, or if the command's return value is
        being inverted via !.  A trap on ERR, if  set,  is  executed  before  the  shell
        exits.

[/바보]

시간낭비해서 미안해...

관련 정보