Files
bash/tests/trap6.sub
T
2025-07-03 16:15:36 -04:00

48 lines
1.1 KiB
Plaintext

# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
set -o functrace
fn() { return; }
trap "echo fn ; fn" RETURN
fn
echo after 1
unset -f fn
fn() { eval return; }
fn
echo after 2
unset -f fn
# make sure the RETURN trap is run in a command substitution
foo() { trap 'echo foo' RETURN; /bin/echo bar; }
baz=$( foo )
declare -p baz
unset -v baz
unset -f foo
# since this sets the exit trap, it has to go last
set +o functrace
# posix interp 1602
ReturnFalse()
{
false ; return
}
trap 'ReturnFalse && echo "woops"' EXIT