Jika kehilangan tingkat kompresi 33% dapat diterima untuk Anda, maka Anda dapat menyimpan data terkompresi dengan enkode base64:
me$mybox$ FOO=$(echo "Hello world" | gzip | base64 -w0) # compressed, base64 encoded data
me$mybox$ echo $FOO | base64 -d | gunzip # use base64 decoded, uncompressed data
Hello world
Ini akan berfungsi, tetapi setiap 3 byte (terkompresi) akan disimpan dalam 4 byte teks.
Saat Anda melakukannya:
hey=$(echo "hello world" | gzip -cf)
Anda tidak memiliki byte yang sama dalam variabel hey
seperti yang Anda miliki di /tmp/myfile
dibuat oleh:
echo "hello world" | gzip -cf > /tmp/myfile
Anda mendapatkan kesalahan "gzip:stdin adalah file gzip multi-bagian -- tidak didukung" hanya karena Anda telah merusak data terkompresi yang tidak dapat dibuka kompresinya.
VAR=$(...)
konstruksi dirancang untuk bekerja dengan teks. Inilah sebabnya mengapa Anda mendapatkan trim trailing tambahan misalnya.