Вместо этого можно использовать zsh
, который является единственной оболочкой, которая может хранить символ NUL в своих переменных. Этот символ даже находится в значении по умолчанию $ IFS
в zsh
.
nul=$'\0'
Или:
nul=$'\x0'
Или
nul=$'\u0000'
Или
nul=$(printf '\0')
Однако обратите внимание, что вы не можете передать такую переменную в качестве аргумента или переменной среды команде, которая выполняется в качестве аргументов и среды. переменные - это строки с разделителями NUL, передаваемые системному вызову execve ()
(ограничение системного API, а не оболочки). Однако в zsh
вы можете передавать байты NUL в качестве аргументов функциям или встроенным командам.
echo $'\0' # works
/bin/echo $'\0' # doesn't