Date: Sun, 13 Mar 2011 20:26:19 -0400 From: Maxim Khitrov <max@mxcrypt.com> To: FreeBSD <freebsd-questions@freebsd.org> Subject: Shell script termination with exit function in backquotes Message-ID: <AANLkTi=-CFmxRicGcosvzhBbM3DMjbWwQNirMrJ1_KP=@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
Hello everyone,
I might be doing something dumb here, but this doesn't make sense to
me. When I run the following script, I would expect to see no output:
----
#!/bin/sh
exit_prog()
{
echo -n 'before'
exit 0
echo -n 'after'
}
echo line 1: `exit_prog`
echo line 2:
echo line 3: `exit 1`
echo line 4:
----
The reason I expect to see no output is because 'exit 0' should be
called before any of the echo lines are allowed to execute. Instead,
what I get on FreeBSD 7 & 8 is:
----
line 1: before
line 2:
----
I don't understand this because 'exit 0' seems to terminate the call
to 'exit_prog', but the execution of the script continues. However,
when 'exit 1' is called, the script terminates before printing out the
last 2 lines.
It seems that 'exit' inside a function doesn't work when that function
is called with backquotes. I assume it has something to do with the
fact that commands in backquotes are executed in a sub-shell, but the
behavior is inconsistent.
When I run the same script on RHEL using bash, all 4 lines are printed:
----
line 1: before
line 2:
line 3:
line 4:
----
What's going on here?
- Max
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTi=-CFmxRicGcosvzhBbM3DMjbWwQNirMrJ1_KP=>
