bug-bash
[Top][All Lists]
Advanced

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

Re: sh vs. bash -xc 'a=b c=$a'


From: alex xmb sw ratchev
Subject: Re: sh vs. bash -xc 'a=b c=$a'
Date: Thu, 23 May 2024 15:45:40 +0200

if u
var=value command ;
the var's only for cmd and disappears afterwards

if u
var=val ; cmd ;
its not for cmd , excepts exported
and is set after cmd , usual behav

old rule

On Thu, May 23, 2024, 3:34 PM Robert Elz <kre@munnari.oz.au> wrote:

>     Date:        Thu, 23 May 2024 09:04:48 -0400
>     From:        Chet Ramey <chet.ramey@case.edu>
>     Message-ID:  <d7b7717e-794f-4447-a2df-894caf0f0ee6@case.edu>
>
>
>   | The bash output clearly tells you the
>   | order of operations, which is the whole purpose of -x.
>
> But it can be horribly misleading.   Consider what bash does with
> this similar case (I used 5.3a1 but I suspect any version would do)
>
> bash-5.3a1 -xc 'a=a b=b; a=1 b=2 cat /dev/null; echo $a'
> + a=a
> + b=b
> + a=1
> + b=2
> + cat /dev/null
> + echo a
> a
>
> versus
>
> bash-5.3a1 -xc 'a=a b=b; a=1 b=2; cat /dev/null; echo $a'
> + a=a
> + b=b
> + a=1
> + b=2
> + cat /dev/null
> + echo 1
> 1
>
> The only difference in the two outputs from -x is the arg to the echo
> command at the end, no indication at all why they're different.
>
>
> On the other hand:
>
> sh -xc 'a=a b=b; a=1 b=2 cat /dev/null; echo $a'
> + a=a b=b
> + a=1 b=2 cat /dev/null
> + echo a
> a
>
> sh -xc 'a=a b=b; a=1 b=2 ; cat /dev/null; echo $a'
> + a=a b=b
> + a=1 b=2
> + cat /dev/null
> + echo 1
> 1
>
> and it is quite clear what is happening.
>
> Personally I'd think it more likely that your average reader would
> interpret "a=1 b=2" as being executed left to right than that they'd
> somehow guess that "a=1" isn't really happening in shell environment.
>
> kre
>
>
>


reply via email to

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