Когда вы делаете:
hey=$(echo "hello world" | gzip -cf)
В переменной hey
нет тех же байтов, что и в /tmp/myfile
, созданной:
echo "hello world" | gzip -cf > /tmp/myfile
Вы получаете сообщение об ошибке «gzip: stdin - это многокомпонентный файл gzip - не поддерживается» просто потому, что вы нарушили сжатые данные, которые нельзя распаковать.
Конструкция VAR=$(...)
предназначена для работы с текстом. Вот почему вы получаете дополнительный трейлинг, например.