Y a-t-il un opérateur binaire «triple inférieur à» <<< dans bash?


27

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 GIFqui 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?


Veuillez noter que les variables bash ne peuvent pas contenir de caractères NUL. Donc, votre variable $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/… )
vaab

Réponses:


31

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 obtiendrez 666f6f0aen 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

COMMAND_WITH_BIN_INPUT <(uudecode <(echo "$uuEncodedData")) 

mais ce n'est pas loin de

echo "$uuEncodedData"|uudecode|COMMAND_WITH_BIN_INPUT

mais sans pipe metachar.


1
Ou essayez od -a <<< ""et vous verrez à la nlplace de la valeur hexadécimale.
jcalfee314

@Wesley Il y a aussi archive.org. :) Lien d'origine: web.archive.org/web/20120126213653/http://tldp.org/LDP/abs/html/…
Jason C

4

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.


1
Des références ou de la précision, ou de simples exemples auraient été plus utiles qu'une supposition sauvage et un sentiment général de votre côté. Il existe des moyens pour analyser les données binaires via bash.
vaab
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.