J'ai essayé un script suivant:
#!/bin/bash
trap 'echo "touching a file" && touch $FILE' EXIT
foo1(){
echo "foo1"
}
foo(){
echo "foo"
export FILE=${FILE:-/tmp/file1}
}
(foo1)
foo
La sortie du script ci-dessus était:
[root@usr1 my_tests]# ./test.sh
foo1
foo
touching a file
Cependant, je m'attendais à ce que le piège soit appelé à la sortie de foo1
, ce qui est appelé dans un sous-shell.
- Est-ce attendu?
- Est
trap
hérité par un sous-shell? - Si oui, dans quel cas est
trap
hérité d'un sous-shell?