bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Feature request: Add "import" built-in.


From: Greg Wooledge
Subject: Re: Feature request: Add "import" built-in.
Date: Mon, 25 Aug 2014 11:56:04 -0400
User-agent: Mutt/1.4.2.3i

On Mon, Aug 25, 2014 at 11:10:31PM +0800, lolilolicon wrote:
> On Mon, Aug 25, 2014 at 8:04 PM, Greg Wooledge <address@hidden> wrote:
> > On Sun, Aug 24, 2014 at 01:36:38PM +0200, Tim Friske wrote:
> >> I currently emulate the behavior I seek for with the following function:
> >>
> >> function _import {
> >>   local -r file="$1"
> >>   set -- "${@:2}"
> >>   source "$file" "$@"
> >> }
> >
> > How is this different from source, exactly?  You're passing all of the
> > same arguments.  Your function is identical to:
> >
> > _import() {
> >     source "$@"
> > }
> >
> 
> His function deals with the edge case where there is no argument
> passed to the source'd file. He wants `source` to behave the same
> inside and outside of a function.

Oh, I see.  It's about *protecting* the main script's positional
parameters from the sourced script.  In that case, the function wrapper
seems to be a reasonable solution.  Just replace the set -- with shift as
others have already suggested.  And add a comment describing why you're
doing this, so old people like me won't be confused by a function that
appears to have no purpose (in 99% of cases).



reply via email to

[Prev in Thread] Current Thread [Next in Thread]