Wenn ein Verlust der Komprimierungsrate von 33 % für Sie akzeptabel ist, können Sie base64-codierte komprimierte Daten speichern:
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
Es wird funktionieren, aber alle 3 (komprimierten) Bytes werden in 4 Bytes Text gespeichert.
Wenn Sie dies tun:
hey=$(echo "hello world" | gzip -cf)
Sie haben nicht die gleichen Bytes in der Variablen hey
wie in /tmp/myfile
erstellt von:
echo "hello world" | gzip -cf > /tmp/myfile
Sie erhalten den Fehler „gzip:stdin ist eine mehrteilige gzip-Datei – wird nicht unterstützt“, nur weil Sie beschädigte komprimierte Daten haben, die nicht dekomprimiert werden können.
Die VAR=$(...)
Die Konstruktion ist für die Arbeit mit Text ausgelegt. Aus diesem Grund erhalten Sie zum Beispiel einen zusätzlichen Nachlauf.