Se per te è accettabile una perdita del tasso di compressione del 33%, puoi archiviare i dati compressi con codifica 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
Funzionerà, ma ogni 3 byte (compressi) verrà memorizzato in 4 byte di testo.
Quando lo fai:
hey=$(echo "hello world" | gzip -cf)
Non hai gli stessi stessi byte nella variabile hey
come hai in /tmp/myfile
creato da:
echo "hello world" | gzip -cf > /tmp/myfile
Ottieni l'errore "gzip:stdin è un file gzip in più parti -- non supportato" semplicemente perché hai dati compressi interrotti che non possono essere decompressi.
Il VAR=$(...)
la costruzione è progettata per lavorare con il testo. Questo è il motivo per cui, ad esempio, ottieni un taglio finale extra.