a
и b
установлены , но из-за наличия линии, команда read
выполняется в подоболочке.При выходе из подоболочки переменные исчезают.
Вы можете прочитать из этого документа
IFS=, read a b <<END
s1,s2
END
Чтобы заменить любой произвольный конвейер (или подстановку процесса), вы можете захватить выходные данные конвейера ипоместите эту переменную в heredoc:
output=$( seq 10 20 | paste -sd, )
IFS=, read a b <<END
$output
END
echo "$a"
echo "$b"
output
10
11,12,13,14,15,16,17,18,19,20