Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: return builtin to end a script



>On 16/02/2024 14:24 GMT Peter Stephenson <p.w.stephenson@xxxxxxxxxxxx> wrote:
>> On 16/02/2024 12:58 GMT Vincent Lefevre <vincent@xxxxxxxxxx> wrote:
>>
>>
>> The return builtin is currently specified only for shell functions
>> and "." scripts, while it would also be useful to end a script,
>> for instance to be able to use zsh script both as commands (e.g.
>> from non-zsh shells) and as autoloaded functions in zsh.
>>
>> So I think that it would be useful to extend it to end a script.
>
> I remember adding this a long time ago now.
>
> It looks like the documentation is defective.

Having looked at the code, I think this does indeed already work,
with the (presumably expected) limitation that in an interactive
shell you don't exit from the outermost shell environment.

pws

diff --git a/Doc/Zsh/builtins.yo b/Doc/Zsh/builtins.yo
index 1aa8076..7a8654f 100644
--- a/Doc/Zsh/builtins.yo
+++ b/Doc/Zsh/builtins.yo
@@ -1649,7 +1649,9 @@ cindex(functions, returning from)
 item(tt(return) [ var(n) ])(
 Causes a shell function or `tt(.)' script to return to
 the invoking script with the return status specified by
-an arithmetic expression var(n).  
+an arithmetic expression var(n).  Also causes a non-interctive
+shell to exit, allowing files containing shell code to be used
+both as scripts and as autoloadable shell functions.
 For example, the following prints `tt(42)':
 
 example(() { integer foo=40; return "foo + 2" }




Messages sorted by: Reverse Date, Date, Thread, Author