grep causa EXIT trap no script bash [closed]

2

Ao executar o seguinte script no OSX usando a versão 3.2 do bash

#!/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"

Eu recebo uma armadilha. Mas se eu mudar a declaração grep final para Yes, ou seja, grep -q Yes , então a armadilha não é acionada.

Alguma ideia de por que isso está acontecendo e como pará-lo? Por que o código de saída do grep faz com que uma armadilha seja acionada?

    
por Vic 05.10.2015 / 11:50

1 resposta

2

Da página man do 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.

[/ Slapshead]

Desculpe ter perdido seu tempo ...

    
por 05.10.2015 / 12:00

Tags