¿Por qué $ '\ 0' o $ '\ x0' es una cadena vacía? Debería ser el carácter nulo, ¿no?

golpetaz permite$'<strong>string</strong>' expansión. Miman bash dice

Palabras del formulario$'<strong>string</strong>' son tratados especialmente. La palabra se expande astring, con los caracteres de escape con barra invertida reemplazados según lo especificado por el estándar ANSI C. Las secuencias de escape de barra invertida, si están presentes, se decodifican de la siguiente manera:
\a alerta (campana)
\b retroceso
\e
\E un personaje de escape
\f formulario de alimentación
\n nueva líne
\r retorno de carro
\t pestaña horizontal
\v pestaña vertical
\ barra invertida
\' una fras
\" comillas dobles
\nnn el carácter de ocho bits cuyo valor es el valor octalnnn (de uno a tres dígitos)
\xHH el carácter de ocho bits cuyo valor es el valor hexadecimalHH (uno o dos dígitos hexadecimales)
\cx un controlx personaj

El resultado expandido está entre comillas simples, como si el signo del dólar no hubiera estado presente.

Peropor quegolpetaz no convertir$'\0' y$'\x0' en un carácter nulo?
¿Está documentado? ¿Hay una razón? (¿Es una característica o una limitación o incluso un error?)

$ hexdump -c <<< _

echo da el resultado esperado:

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

Mi versión bash

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

Por quéecho $'foo\0bar' no se comporta comoecho -e 'foo\0bar'?

\0'

echo da el resultado esperado:

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

Mi versión bash

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

Por quéecho $'foo\0bar' no se comporta comoecho -e 'foo\0bar'?

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

echo da el resultado esperado:

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

Mi versión bash

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

Por quéecho $'foo\0bar' no se comporta comoecho -e 'foo\0bar'?

Respuestas a la pregunta(3)

Su respuesta a la pregunta