On Sat, 21 Oct 2006 14:36:04 +0000
Gerrit Pape <[EMAIL PROTECTED]> wrote:

> Hi A., I don't think dash and posh are at fault here...

> ...This means export x="$@" with $*="-f --c" will expand to export x=-f
> --c, and dash's error message is quite right.  bash adds quotes in
> this case, but you actually should use "$*" AFAICT, that's what it's
> for.
> 
>  $ dash -xc 'foo() {  export x="$@" ; } ; foo -f --c ; echo $?'
>  + foo -f --c
>  + export x=-f --c
>  export: 1: --c: bad variable name
>  $ bash -xc 'foo() {
>  x="$@" ; } ; foo -f --c ; echo $?'
>  + foo -f --c
>  + x='-f --c'
>  + echo 0
>  0
>  $ 
> 
> I'm about to close this bug, thanks, Gerrit.

Thanks for the detailed explanation, and the good advice how not to get
the error using "$*".  And apologies for my misunderstanding... but in
hopes of extracting some public good from it, a last question:

If 'dash' and 'posh' behave correctly, and 'bash' does it differently,
would that indicate a bug in how 'bash' parses "$@"?  The 'bash'
package description says:

        % dlocate -s bash | grep -B 1 POSIX
         Bash is ultimately intended to be a conformant implementation of the
         IEEE POSIX Shell and Tools specification (IEEE Working Group 1003.2).

Since 'dash' handles "$@" in a POSIX compliant way, therefore 'bash' does not.
If this is a 'bash' bug, then it would be more profitable to reassign
(and retitle) this bug to 'bash' rather than close it.

Note that the '--posix' switch of 'bash' doesn't make it act like 'dash':

        % bash --posix
        % foo() {  export x="$@" ; } ; foo -f --c ; echo $?
        0

HTH...


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to