bug-bash
[Top][All Lists]
Advanced

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

Re: Problem with brace expansion


From: Dr Alun J. Carr
Subject: Re: Problem with brace expansion
Date: Thu, 23 Apr 2015 01:01:43 +0100

Well, to be strictly conformant with heirloom SysV sh, we have to use the 
following (which is uglier than Cobol with a hangover):

#looper2-sh.sh
n=4
i=1
while [ $i -le $n ]
do
    echo i = $i
    i=`expr $i + 1`
done

which also works with dash and mksh. Perhaps this needs to go into a FAQ 
somewhere about coding loops for an absolutely bare-bones shell.

> On 22 Apr 2015, at 00:22, Eric Blake <eblake@redhat.com> wrote:
> 
> On 04/21/2015 01:44 PM, Dr Alun J. Carr wrote:
> 
>> Tests were done with bash, ksh, zsh, pdksh, dash and heirloom System V 
>> Bourne sh with the following versions:
>> bash 3.2.57(1)
>> bash 4.3.33(1)
>> ksh          version         sh (AT&T Research) 93u+ 2012-08-01
>> zsh          5.0.5 (x86_64-apple-darwin14.0)
>> pdksh        stable 5.2.14
>> dash stable 0.5.8
>> sh           ???
> 
> You do realize, I hope, that brace expansion is not required by POSIX,
> and therefore there is no standard for what behavior it has, and it
> should be no surprise that pdksh, dash, and Bourne sh do not try to
> expand it.
> 
> As for whether bash should expand $n into 4 prior to doing brace
> expansion, or whether brace expansion is attempted first but not
> recognizing $n as a valid bound devolves into no expansion, that is
> indeed a difference between ksh and bash.  But bash is consistent with
> its documentation:
> 
>>       The order of expansions is: brace expansion; tilde expansion, parameter
>>       and variable expansion, arithmetic expansion, and command  substitution
>>       (done  in a left-to-right fashion); word splitting; and pathname expan‐
>>       sion.
> 
> so you cannot use a variable as a bound and still expect brace expansion
> to work, since variables aren't expanded yet.
> 
> --
> Eric Blake   eblake redhat com    +1-919-301-3266
> Libvirt virtualization library http://libvirt.org
> 

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail


reply via email to

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