Hi everyone,

I've encountered a very strange behavior regarding variable scope and traps,
which looks very much like a bug.

This command:

echo '
    set -e;
    tt() { declare -r v=; };        t() { tt; };
    ff() { declare -r v=; false; }; f() { ff; };
    trap t EXIT;
    f
' | bash

produces this error message:
bash: line 3: declare: v: readonly variable

While this:

bash -c '
    set -e;
    tt() { declare -r v=; };        t() { tt; };
    ff() { declare -r v=; false; }; f() { ff; };
    trap t EXIT;
    f
'

doesn't. As don't these:

echo '
    set -e;
    tt() { declare -r v=; };        t() { tt; };
    ff() { declare -r v=; false; };
    trap t EXIT;
    ff
' | bash

echo '
    set -e;
    tt() { declare -r v=; };
    ff() { declare -r v=; false; }; f() { ff; };
    trap tt EXIT;
    f
' | bash

Could this indeed be a bug? If yes, can it be fixed?

Thank you.

Sincerely,
Nick

Reply via email to