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=>