Dlaczego $ „\ 0” lub $ „\ x0” jest pustym ciągiem? Powinien być znakiem zerowym, prawda?

grzmotną pozwala$'<strong>string</strong>' ekspansja. Mójman bash mówi

Słowa kluczowe formularza$'<strong>string</strong>' są traktowane specjalnie. Słowo rozwija się dostring, z zastąpionymi znakami odwrotnego ukośnika znakami określonymi przez standard ANSI C. Sekwencje specjalne odwrotnego ukośnika, jeśli występują, są dekodowane w następujący sposób:
\a alert (dzwonek)
\b backspace
\e
\E znak ucieczki
\f formularz feed
\n Nowa lini
\r powrót karetki
\t karta pozioma
\v karta pionowa
\ ukośnik wsteczn
\' pojedynczy cytat
\" cudzysłó
\nnn ośmiobitowy znak, którego wartość jest wartością ósemkowąnnn (jedna do trzech cyfr)
\xHH ośmiobitowy znak, którego wartość jest wartością szesnastkowąHH (jedna lub dwie cyfry szesnastkowe)
\cx kontrola-x posta

Rozwinięty wynik jest cytowany pojedynczo, tak jakby znak dolara nie był obecny.

Aledlaczegogrzmotną nie konwertować$'\0' i$'\x0' w znak null?
Czy to jest udokumentowane? Czy jest powód? (Czy to funkcja, ograniczenie, a nawet błąd?)

$ hexdump -c <<< _

echo daje oczekiwany wynik:

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

Moja wersja bash

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

Czemuecho $'foo\0bar' nie zachowuje się jakecho -e 'foo\0bar'?

\0'

echo daje oczekiwany wynik:

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

Moja wersja bash

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

Czemuecho $'foo\0bar' nie zachowuje się jakecho -e 'foo\0bar'?

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

echo daje oczekiwany wynik:

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

Moja wersja bash

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

Czemuecho $'foo\0bar' nie zachowuje się jakecho -e 'foo\0bar'?

questionAnswers(3)

yourAnswerToTheQuestion