Пытаясь правильно обработать список file-/foldernames (см. Другие мои вопросы), используя символ NULL в качестве разделителя, я наткнулся на странное поведение Bash, которое я не понимаю:
При назначении переменной, содержащей один или несколько NULL-символов, NULL-символы теряются/игнорируются/не сохраняются.
Например,
echo -ne "n\0m\0k" | od -c # -> 0000000 n \0 m \0 k
Но:
VAR1='echo -ne "n\0m\0k"'
echo -ne "$VAR1" | od -c # -> 0000000 n m k
Это означает, что мне нужно было бы записать эту строку в файл (например, в /tmp) и прочитать ее оттуда, если прямая передача нежелательна или невозможна.
При выполнении этих сценариев в оболочке Z (zsh) строки, содержащие \0, сохраняются в обоих случаях, но, к сожалению, я не могу предположить, что zsh присутствует в системах, где выполняется мой сценарий, в то время как Bash должен быть.
Как можно эффективно хранить или обрабатывать строки, содержащие символы \0, без потери символов (meta-)?