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  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
>> 
>>
>> Whereas on bash-4.0.33, I get:
>>
>> $ bash -c 'IFS=:; printf "<%s>\n" "${@/q}"' x 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/




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  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
>     
>
> Whereas on bash-4.0.33, I get:
>
>     $ bash -c 'IFS=:; printf "<%s>\n" "${@/q}"' x 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:






In Bash 3.2.49(23)-release I get:






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


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


Whereas on bash-4.0.33, I get:

$ bash -c 'IFS=:; printf "<%s>\n" "${@/q}"' x 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