Dies ist eine eher hypothetische Frage. Bitte fragen Sie mich nicht, warum ich das tun möchte.
Angenommen, ich habe eine Variable GIF
, die Binärdaten enthält, und ich kann den Pipe- |
Operator nicht verwenden, dann sollte der Operator "Triple-Less-than" wie folgt verwendet werden:
openssl enc -base64 <<< $GIF
Es scheint mir jedoch, dass dies <<<
nicht binärsicher ist und daher die Binärdaten beschädigt werden.
Gibt es eine binärsichere Entsprechung?
bash
redirection
Mikhail
quelle
quelle
$GIF
also zunächst einmal nicht die vollständige Binärdatei, noch bevor sie gestartet wird. Mit Ausnahme des NUL-Zeichens enthält es jedoch alle anderen. (als Hinweis : vaab.blog.kal.fr/2014/05/03/… )Antworten:
Die here string redirection (
<<<
) ist eine einfache Form der here document redirection (<<
). Hier ist die Zeichenfolgenumleitung nicht "binär sicher". Bash erweitert den Here-String. Außerdem fügt Bash eine neue Zeile an das Ende der Here-Zeichenfolge an (geben Sie den Befehl einxxd -p <<< "foo"
und Sie erhalten eine666f6f0a
Antwort).Ihre einzige sichere Wette mit Ausnahme von Pipes ist die E / A-Umleitung .
Ähnliche nicht binärsichere Frage hier . Sie können verschlüsselte Daten speichern und dies versuchen
Dies ist jedoch nicht weit von
aber ohne rohr metachar.
quelle
od -a <<< ""
Sie , und Sie werdennl
anstelle des Hex-Werts sehen.Bash ist im Allgemeinen nicht binärsicher und beschädigt beim Ersetzen Nullen und Zeilenumbrüche in Variablen, die binären Inhalt enthalten.
Ich denke also, die Antwort ist "nein", aber im Grunde genommen "nicht in einer Shell-Skriptsprache", weil sie alle Probleme mit Binärdateien zu haben scheinen.
Ich würde jedoch sagen, dass Sie vorhaben, die Daten in $ GIF abzulegen, stattdessen sie in eine Datei abzulegen oder Python als alternative Skriptsprache zu verwenden, die problemlos mit Binärdaten umgehen kann.
quelle