Re: Array parameter expansion with non-space-IFS on bash-3/4

2009-11-29 Thread DennisW
On Nov 27, 3:47 pm, Freddy Vulto fvu...@gmail.com wrote:
 I noticed different behaviour between bash-3 and bash-4 when
 performing parameter expansion on an array with IFS set to a non-space
 value.  For example, on bash-3.2.39, I get:

     $ bash -c 'IFS=:; printf %s\n ${@/q}' x a b
     a b

 Whereas on bash-4.0.33, I get:

     $ bash -c 'IFS=:; printf %s\n ${@/q}' x a b
     a
     b

 Bash-4 seems to give the desired result (leave the array intact), but
 it's a bug on bash-3?

 Regards,

 Freddy Vultohttp://fvue.nl

It seems to be a combination of IFS and pattern substitution. There's
another difference shown below with an intact IFS, but referring to a
string as an array.

Using this script:

#!/bin/bash
v=(a b c)
w=d e f
printf %s\n $...@]/q}
IFS=X
printf %s\n $...@]/q}

In Bash 4.0.33(1)-release I get:

d e f
a
b
c

In Bash 3.2.49(23)-release I get:

d
e
f
a b c

Other combinations of array vs. string, changing IFS or not, and/or
not using pattern substitution produce the same results in the two
versions.



Dennis

sysadmins: visit serverfault.com


Re: Array parameter expansion with non-space-IFS on bash-3/4

2009-11-29 Thread Chet Ramey
DennisW wrote:
 On Nov 27, 3:47 pm, Freddy Vulto fvu...@gmail.com wrote:
 I noticed different behaviour between bash-3 and bash-4 when
 performing parameter expansion on an array with IFS set to a non-space
 value.  For example, on bash-3.2.39, I get:

 $ bash -c 'IFS=:; printf %s\n ${@/q}' x a b
 a b

 Whereas on bash-4.0.33, I get:

 $ bash -c 'IFS=:; printf %s\n ${@/q}' x a b
 a
 b

 Bash-4 seems to give the desired result (leave the array intact), but
 it's a bug on bash-3?

 Regards,

 Freddy Vultohttp://fvue.nl
 
 It seems to be a combination of IFS and pattern substitution. 

It was a bug in bash-3.2, fixed in bash-4.0.

-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, ITS, CWRUc...@case.eduhttp://cnswww.cns.cwru.edu/~chet/




Array parameter expansion with non-space-IFS on bash-3/4

2009-11-27 Thread Freddy Vulto
I noticed different behaviour between bash-3 and bash-4 when
performing parameter expansion on an array with IFS set to a non-space
value.  For example, on bash-3.2.39, I get:

$ bash -c 'IFS=:; printf %s\n ${@/q}' x a b
a b

Whereas on bash-4.0.33, I get:

$ bash -c 'IFS=:; printf %s\n ${@/q}' x a b
a
b

Bash-4 seems to give the desired result (leave the array intact), but
it's a bug on bash-3?

Regards,

Freddy Vulto
http://fvue.nl