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.
[/바보]
시간낭비해서 미안해...