Re: Array parameter expansion with non-space-IFS on bash-3/4
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
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
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