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

Re: trap ERR



On Tue, 21 Feb 2017 07:52:02 -0800
Ray Andrews <rayandrews@xxxxxxxxxxx> wrote:
> On 20/02/17 10:08 PM, Ray Andrews wrote:
> > I haven't played around with traps much, but trying this in a script:
> >
> >    trap 'echo ERROR at $0 $LINENO; return' ERR
> >
> >    cp file1/tmp
> >    cp no_such_file/tmp
> >    cp file2/tmp
> >
> >    # trap '' ERR
> >
> > I want to return with the message at any error, and it does return, 
> > but it seems that the trap remains in effect which puzzles me since 
> > when a script quits, I expect things to be returned to stock, no?  The 
> > commented line kills the trap fine, but of course if I return at the 
> > first error, it's never executed.

[Z]ERR and DEBUG are special.  If you want to stop them you do so
explicitly. You can append '; trap "" ERR' to the trap, if you want.

> > Also, I'd expect to 'exit' a script, but it ends up killing the whole 
> > terminal.  I'm used to using 'return' but now that I stop to think 
> > about it, that should be wrong, no?
> 
> Pardon, that was a moronic question.  I'm so used to sourcing scrips 
> that I mostly forget that there is any such thing as executing them and 
> I'm sourcing automatically even when I think I'm executing -- I type the 
> little dot so fast I don't even notice it.   I don't execute because I 
> don't know how to have access to my functions inside an executed 
> script.  Can I?  If so, all the above difficulties go away.

There's nothing to stop you using $fpath and autoload in a script.

pws



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