All data ends up in first variable because you do not use read X Y Z < <(command) but you use read X Y Z <<< $(command) The former form works for me even on SLE11. The latter form does not work for me even not on SLE12: ---------------------------------------------------------------------------- # ( IFS=. read maj min junk <<< $(rpm -q --qf "%{version}" cups) ; \ echo maj:$maj min:$min ) maj:1 7 5 min: ----------------------------------------------------------------------------