Это довольно гипотетический вопрос, поэтому, пожалуйста, не спрашивайте меня, почему я хочу это сделать.
Предполагая, что у меня есть переменная, GIF
которая содержит двоичные данные, и предполагая, что я не могу использовать |
оператор канала , следующий способ должен быть правильным способом использования оператора «triple-less-than»:
openssl enc -base64 <<< $GIF
Тем не менее, мне кажется, что <<<
это не безопасно для двоичных файлов и, следовательно, двоичные данные становятся поврежденными.
Есть ли бинарно-безопасный эквивалент?
bash
redirection
Михаил
источник
источник
$GIF
, для начала, не содержит полный двоичный код даже до запуска. Однако, за исключением символа NUL, он содержит все остальные. (в качестве ссылки: vaab.blog.kal.fr/2014/05/03/… )Ответы:
Здесь строка Перенаправление (
<<<
) является простой формой здесь документ перенаправления (<<
). Здесь перенаправление строк не является «бинарной безопасностью»; Bash выполнит расширение строки здесь. Кроме того, Bash добавит новую строку в конец строки here (введите команду,xxd -p <<< "foo"
и вы получите666f6f0a
ответ).Ваша единственная безопасная ставка, за исключением каналов, - это перенаправление ввода / вывода .
Подобный не бинарный безопасный вопрос здесь . Вы можете хранить закодированные данные и попробовать это
Однако это не далеко от
но без трубы метачар.
источник
od -a <<< ""
и вы увидитеnl
вместо шестнадцатеричного значения.Bash в целом не является бинарно-безопасным, и во время подстановки будет повреждать пустые и новые строки в переменных, содержащих двоичное содержимое.
Поэтому я думаю, что ответ «нет», но более фундаментально «не на языке сценариев оболочки», потому что все они, похоже, имеют проблемы с двоичным кодом.
Однако я бы сказал, что вы планируете помещать данные в $ GIF, вместо этого вы помещаете их в файл или используете python в качестве альтернативного языка сценариев, который будет обрабатывать двоичные данные без проблем.
источник