Você pode redirecionar para um arquivo temporário:
file=$(mktemp) || exit
{
rm -f -- "$file"
trap
traps=$(cat)
} > "$file" < "$file"
Observe que, nesse sentido, dash ' trap não é POSIX como POSIX não exigir que:
var=$(trap)
ser tratado como um caso especial em que as armadilhas não são redefinidas na subcamada.
zsh e mksh também têm o problema. Em zsh , no entanto, você pode fazer:
trap | IFS= read -rd '' traps