To raczej hipotetyczne pytanie, więc proszę nie pytaj mnie, dlaczego chciałbym to zrobić.
Zakładając, że mam zmienną GIF
zawierającą dane binarne i zakładając, że nie mogę użyć |
operatora potoku , następujący sposób powinien być prawidłowym sposobem użycia operatora „trzy razy mniej niż”:
openssl enc -base64 <<< $GIF
Wydaje mi się jednak, że <<<
nie jest binarnie bezpieczny i dlatego dane binarne ulegają uszkodzeniu.
Czy istnieje odpowiednik binarnie bezpieczny?
bash
redirection
Michaił
źródło
źródło
$GIF
, na początek, nie przechowuje pełnego binarnego nawet przed uruchomieniem. Jednak z wyjątkiem znaku NUL, zawiera on wszystkie pozostałe. (jako odnośnik: vaab.blog.kal.fr/2014/05/03/... )Odpowiedzi:
Tu łańcuch przekierowania (
<<<
) jest prostą formą tutaj dokumentu przekierowania (<<
). Przekierowanie ciągu nie jest tutaj „bezpieczne binarnie”; Bash wykona rozwinięcie łańcucha tutaj. Ponadto Bash doda nową linię na końcu tutaj ciągu (wydaj polecenie,xxd -p <<< "foo"
a otrzymasz666f6f0a
w zamian).Jedynym bezpiecznym zakładem, z wyjątkiem potoków, jest przekierowanie we / wy .
Podobne, nie binarne, bezpieczne pytanie tutaj . Możesz przechowywać zakodowane dane i spróbuj tego
jednak nie jest to dalekie
ale bez rurkowego metacharu.
źródło
od -a <<< ""
a zobaczysznl
zamiast wartości szesnastkowej.Bash nie jest ogólnie bezpieczny pod względem binarnym i spowoduje uszkodzenie zer i znaków nowej linii w zmiennych zawierających zawartość binarną podczas podstawiania.
Myślę więc, że odpowiedź brzmi „nie”, ale bardziej zasadniczo „nie w języku skryptowym powłoki”, ponieważ wszyscy wydają się mieć problemy z binarnym.
Powiedziałbym jednak, że planujesz przenieść dane do $ GIF, zamiast tego umieścisz je w pliku lub użyjesz Pythona jako alternatywnego języka skryptowego, który bez problemu poradzi sobie z danymi binarnymi.
źródło