Por que $ '\ 0' ou $ '\ x0' é uma string vazia? Deve ser o caractere nulo, não é?

bate permite$'<strong>string</strong>' expansão. Minhasman bash diz:

Palavras do formulário$'<strong>string</strong>' são tratados especialmente. A palavra se expande parastring, com caracteres de escape com barra invertida substituídos conforme especificado pelo padrão ANSI C. Seqüências de escape de barra invertida, se presentes, são decodificadas da seguinte maneira:
\a alerta (campainha)
\b backspace
\e
\E um caractere de escape
\f feed do formulário
\n nova linh
\r retorno de carro
\t aba horizontal
\v aba vertical
\ barra invertida
\' citação únic
\" citação dupl
\nnn o caractere de oito bits cujo valor é o valor octalnnn (um a três dígitos)
\xHH o caractere de oito bits cujo valor é o valor hexadecimalHH (um ou dois dígitos hexadecimais)
\cx a control-x personage

O resultado expandido é de aspas simples, como se o cifrão não estivesse present

Masporquebate não converter$'\0' e$'\x0' em um caractere nulo?
Está documentado? Existe uma razão? (É um recurso ou uma limitação ou mesmo um bug?)

$ hexdump -c <<< _

echo fornece o resultado esperado:

> hexdump -c < <( echo -e '_\x0\x1\x2\x3_' )
0000000   _  \0 001 002 003   _  \n
0000007

My bash version

$ bash --version | head -n 1
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)

Por quêecho $'foo\0bar' não se comporta comoecho -e 'foo\0bar'?

\0'

echo fornece o resultado esperado:

> hexdump -c < <( echo -e '_\x0\x1\x2\x3_' )
0000000   _  \0 001 002 003   _  \n
0000007

My bash version

$ bash --version | head -n 1
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)

Por quêecho $'foo\0bar' não se comporta comoecho -e 'foo\0bar'?

\x1\x2\x3\x4_' 0000000 _ 001 002 003 004 _ \n 0000007

echo fornece o resultado esperado:

> hexdump -c < <( echo -e '_\x0\x1\x2\x3_' )
0000000   _  \0 001 002 003   _  \n
0000007

My bash version

$ bash --version | head -n 1
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)

Por quêecho $'foo\0bar' não se comporta comoecho -e 'foo\0bar'?

questionAnswers(3)

yourAnswerToTheQuestion