Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Декодирование base64 не работает при назначении переменной bash?

Автор вопроса: OlofОтветов: 0

Мне не удалось понять следующее поведение. Первая кодировка, которая мне кажется нормальной:

$ echo -n "Cg==" | base64 -d | xxd
00000000: 0a
$ echo -n "Cgo=" | base64 -d | xxd
00000000: 0a0a

Когда я назначаю декодирование переменной, я теряю LF в процессе.

$ VAR=$(echo -n "Cg==" | base64 -d)
$ echo -n $VAR | xxd
$ VAR=$(echo -n "Cgo=" | base64 -d)
$ echo -n $VAR | xxd
$

То есть я не получаю ничего, кроме null() вместо 0a и 0a0a соответственно. Что мне не хватает? Ошибка в примере? Это ожидаемое поведение?

  • Вы всегда теряете LF с этим синтаксисом, взгляните на это. rugolinifr 29.07.2020
  • Спасибо, прочитайте сообщение, и один из ответов, похоже, соответствует приведенному выше: @ismael Нет, $() определяется POSIX как удаление последовательностей одного или нескольких символов "новой строки" в конце замены. - Йенс Olof 29.07.2020
  • Я должен переосмыслить свой демонстрационный код и, возможно, закодировать его непосредственно на подходящем языке, отличном от оболочки. Olof 29.07.2020

bashbase64variable-assignmentfile-encodings

На этот вопрос пока нет ответов в архиве.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы