Hi,
 
the same code behaves different in jessie and stretch. Does someone know why, 
and if this could be a regression?
In jessie "version 1" and "version 2" behave identical. In stretch, "version 2" 
behaves different (only one item in array)
The code difference between "version 1" and "version 2" lies in quotation marks 
around  $_inputstring

Yours lopiuh
 
Code:
 
#!/usr/bin/env bash
set -o errexit  # (set -e)
set -o nounset  # (set -u)
set -o pipefail #
shopt -s nullglob # enable
#shopt -s failglob
#set -o noglob

clear
echo "===========================Version 1==========================="
echo "Bash Version: $BASH_VERSION"
echo -n "IFS:"; echo "$IFS" | cat -vte
echo

unset _array; declare -a _array

_inputstring="$(echo -e "item01\nitem02\nitem03")"
echo "inputstring:"
echo -n "$_inputstring" | xxd; echo

read -ra _array <<<$(echo $_inputstring) # <<< NO -"- around string
#read -ra _array <<<"$_inputstring" #<--- only one item, even in jessie
#read -ra _array <<<$_inputstring #<--- only one item, even in jessie

echo "itemcount of array: ${#_array[@]}"
for i in "${_array[@]}"; do
        echo -n "element: "; echo -n "$i" | xxd; echo
done
#
echo "===========================Version 2==========================="
echo "Bash Version: $BASH_VERSION"
echo -n "IFS:"; echo "$IFS" | cat -vte
echo

unset _array; declare -a _array

_inputstring="$(echo -e "item01\nitem02\nitem03")"
echo "inputstring:"
echo -n "$_inputstring" | xxd; echo

read -ra _array <<<$(echo "$_inputstring") # <<< WITH -"- around string
#read -ra _array <<<"$_inputstring" #<--- only one item, even in jessie
#read -ra _array <<<$_inputstring #<--- only one item, even in jessie

echo "itemcount of array: ${#_array[@]}"
for i in "${_array[@]}"; do
        echo -n "element: "; echo -n "$i" | xxd; echo
done

exit

Output of jessie:
===========================Version 1===========================
Bash Version: 4.3.30(1)-release
IFS: ^I$
$

inputstring:
0000000: 6974 656d 3031 0a69 7465 6d30 320a 6974  item01.item02.it
0000010: 656d 3033                                em03

itemcount of array: 3
element: 0000000: 6974 656d 3031                           item01

element: 0000000: 6974 656d 3032                           item02

element: 0000000: 6974 656d 3033                           item03

===========================Version 2===========================
Bash Version: 4.3.30(1)-release
IFS: ^I$
$

inputstring:
0000000: 6974 656d 3031 0a69 7465 6d30 320a 6974  item01.item02.it
0000010: 656d 3033                                em03

itemcount of array: 3
element: 0000000: 6974 656d 3031                           item01

element: 0000000: 6974 656d 3032                           item02

element: 0000000: 6974 656d 3033                           item03


Output of stretch:
===========================Version 1===========================
Bash Version: 4.4.5(1)-release
IFS: ^I$
$

inputstring:
00000000: 6974 656d 3031 0a69 7465 6d30 320a 6974  item01.item02.it
00000010: 656d 3033                                em03

itemcount of array: 3
element: 00000000: 6974 656d 3031                           item01

element: 00000000: 6974 656d 3032                           item02

element: 00000000: 6974 656d 3033                           item03

===========================Version 2===========================
Bash Version: 4.4.5(1)-release
IFS: ^I$
$

inputstring:
00000000: 6974 656d 3031 0a69 7465 6d30 320a 6974  item01.item02.it
00000010: 656d 3033                                em03

itemcount of array: 1
element: 00000000: 6974 656d 3031                           item01

Reply via email to