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