> echo 0
0
> echo \0
0
[email protected]:~
> echo \\0
[email protected]:~
> echo "\\0"
# <--- What!!?
[email protected]:~
> echo \\\0
[email protected]:~
> echo "\\\0"
\0
[email protected]:~
> bash
Executing .bashrc
$ echo "\0"
\0
$ echo "\\0"
\0
$ echo "\\\0"
\\0
Muszę powiedzieć, że zachowanie Basha ma dla mnie dużo więcej sensu.Dlaczego muszę wpisać "\ 0", aby utworzyć ciąg " 0" w zsh?
Więcej szczegółów:
[email protected]:~
> echo "0" | hexdump -C
00000000 30 0a |0.|
00000002
[email protected]:~
> echo "\0" | hexdump -C
00000000 00 0a |..|
00000002
[email protected]:~
> echo "\\0" | hexdump -C
00000000 00 0a |..|
00000002
[email protected]:~
> echo "\\\0" | hexdump -C
00000000 5c 30 0a |\0.|
00000003
[email protected]:~
> echo "\\\\0" | hexdump -C
00000000 5c 30 0a |\0.|
00000003
[email protected]:~
> echo "\\\\\0" | hexdump -C
00000000 5c 00 0a |\..|
00000003
[email protected]:~
> echo "\\\\\\0" | hexdump -C
00000000 5c 00 0a |\..|
00000003
[email protected]:~
> echo "\\\\\\\0" | hexdump -C
00000000 5c 5c 30 0a |\\0.|
00000004
Największym problemem jest to, że nie ma wartości, które daje pożądanego rezultatu \0
zarówno bash i zsh.
Aktualizacja:
[email protected]:~
> echo '0' | hexdump -C
00000000 30 0a |0.|
00000002
[email protected]:~
> echo '\' | hexdump -C
00000000 5c 0a |\.|
00000002
[email protected]:~
> echo '\\' | hexdump -C
00000000 5c 0a |\.|
00000002
[email protected]:~
> echo \\ | hexdump -C
00000000 5c 0a |\.|
00000002
[email protected]:~
> echo '\\0' | hexdump -C
00000000 5c 30 0a |\0.|
00000003
Wygląda użyciu apostrofów pomaga uzyskać spójne zachowanie. Chciałbym, żeby ktoś wyjaśnił zachowanie za pomocą podwójnych cytatów.
co daje echo "\\"? Warto również wypróbować pojedyncze cytaty: echo "\ 0" – catholicon