[Haskell-cafe] [offtopic] UNIX Shell (was: GHC RTS question)

Roman Cheplyaka roma at ro-che.info
Wed Feb 24 05:19:11 EST 2010


* Magnus Therning <magnus at therning.org> [2010-02-24 09:11:54+0000]
> On Wed, Feb 24, 2010 at 07:18, Roman Cheplyaka <roma at ro-che.info> wrote:
> > * Brandon S. Allbery KF8NH <allbery at ece.cmu.edu> [2010-02-24 00:02:12-0500]
> >> On Feb 22, 2010, at 03:36 , Roman Cheplyaka wrote:
> >> >* Anthony Cowley <acowley at seas.upenn.edu> [2010-02-21 14:15:00-0500]
> >> >>#! /usr/bin/env bash
> >> >>./prog --RTS $*
> >> >
> >> > ./prog --RTS "$@"
> >> >
> >> >Otherwise it will work wrong if arguments contain quoted field
> >> >separators (e.g. spaces).
> >>
> >>
> >>   #! /bin/sh
> >>   ./prog --RTS ${1+"$@"}
> >>
> >> The longer specification above should work with whatever /bin/sh is
> >> around, whether it's Solaris /sbin/sh, FreeBSD's sh, general Linux
> >> bash, Debian/Ubuntu dash, etc.
> >
> > Are you referring to some Solaris shell bug?
> >
> > Under POSIX these constructs seem to be equivalent.
> > "If there are no positional parameters, the expansion of '@' shall
> > generate zero fields, even when '@' is double-quoted."
> 
> I believe he's referring to the following bit (taken from bash's man page):
> 
> @ Expands to the positional parameters, starting from one.  When the expansion
>   occurs within double quotes, each parameter expands to a separate word.  That
>   is, "$@" is equivalent to "$1" "$2" ...  If the  double-quoted expansion
>   occurs  within a word, the expansion of the first parameter is joined with
>   the beginning part of the original word, and the expansion of the last
>   parameter is joined with the last part of the original word.  When there are
>   no positional parameters, "$@" and $@ expand to nothing (i.e., they are
>   removed).

Well, this agrees with POSIX. So still I don't see the difference
between "$@" and ${1+"$@"}.

-- 
Roman I. Cheplyaka :: http://ro-che.info/
"Don't let school get in the way of your education." - Mark Twain


More information about the Haskell-Cafe mailing list