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

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

$ 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 соответственно. Что мне не хватает? Ошибка в примере? Это ожидаемое поведение?


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