C'est une question plutôt hypothétique, alors ne me demandez pas pourquoi je voudrais faire ça.
En supposant que j'ai une variable GIF
qui contient des données binaires et en supposant que je ne peux pas utiliser l' |
opérateur de tuyau , ce qui suit devrait être la bonne façon d'utiliser l'opérateur "triple moins que":
openssl enc -base64 <<< $GIF
Cependant, il me semble que ce <<<
n'est pas sûr pour les binaires et donc les données binaires sont corrompues.
Existe-t-il un équivalent binaire sûr?
bash
redirection
Mikhail
la source
la source
$GIF
, pour commencer, ne tient pas complètement binaire avant même de commencer. Cependant, à l'exception du caractère NUL, il détient tous les autres. (comme ref: vaab.blog.kal.fr/2014/05/03/… )Réponses:
La redirection de chaîne ici (
<<<
) est une forme simple de redirection de document ici (<<
). Ici, la redirection de chaîne n'est pas «sûre pour les binaires»; Bash effectuera une expansion sur la chaîne here. De plus, Bash ajoutera une nouvelle ligne à la fin de la chaîne ici (xxd -p <<< "foo"
lancez la commande et vous obtiendrez666f6f0a
en retour).Votre seule valeur sûre, à l' exclusion des tuyaux, est la redirection d' E / S .
Question de sécurité non binaire similaire ici . Vous pouvez stocker des données encodées et essayer ceci
mais ce n'est pas loin de
mais sans pipe metachar.
la source
od -a <<< ""
et vous verrez à lanl
place de la valeur hexadécimale.Bash n'est pas binaire sûr en général, et corrompra les valeurs nulles et les sauts de ligne dans les variables contenant du contenu binaire pendant la substitution.
Je pense donc que la réponse est "non" mais plus fondamentalement "pas dans un langage de script shell" car ils semblent tous avoir des problèmes avec le binaire.
Je dirais cependant que vous envisagez d'entrer les données dans $ GIF, vous les placez plutôt dans un fichier, ou utilisez python comme un autre langage de script qui gérera les données binaires sans problème.
la source