Comment intercepter ERR lors de l'utilisation de "set -e' dans Bash

J'ai un script simple :

#!/bin/bash
set -e
trap "echo BOO!" ERR 

function func(){
    ls /root/
}

func

Je voudrais piège ERR si mon script ne marche pas (comme il le fera ici b/c je n'ai pas les autorisations pour regarder dans /root). Cependant, lors de l'utilisation de set -e il n'est pas coincé. Sans set -e erreur est pris au piège.

Selon la page de manuel de bash, pour set -e :

... Un piège sur l'erreur, si elle est définie, est exécuté avant que le shell sorties. ...

Pourquoi ce n'est pas mon piège exécuté? À partir de la page de man, il semble comme il se doit.

  • En aparté: il est préférable d'apostrophes votre piège des gestionnaires, à moins que vous ne souhaitiez variable références élargi à l'avant.