Próbowałem wykonać nową linię za pomocą echo
i próbowałem wykonać dwa polecenia:
Pierwsze polecenie:
echo $'Hello World\nThis is a new line'
Odpowiedź:
Hello World This is a new line
Drugie polecenie:
echo $"Hello World\nThis is a new line"
Odpowiedź:
Hello World\nThis is a new line
Moje pytanie brzmi: jaka jest różnica między ciąg owinięte $' '
vs ciąg owinięte $" "
w bash
„s echo
?
"weak quote"
i'strong quote'
różnią się od$'C String'
i$"I18N String"
.Odpowiedzi:
Jak wyjaśniono tutaj , składnia
$'string'
określa ciąg w stylu C, który zawiera znaki specjalne, takie jak\n
znak nowej linii.$"string"
dotyczy rozszerzenia I18N, które nie ma takich magicznych ucieczek.Zauważ, że różnią się one od bardziej powszechnych
"string"
(słabe cytowanie) i'string'
(mocne cytowanie).źródło
$
Na początku napisu w języku:powoduje interpretację sekwencji specjalnych.
Podręcznik referencyjny Bash [mówi]
Ale
jest zupełnie inny. W tym [artykule] na temat tłumaczeń specyficznych dla ustawień regionalnych napisano:
Uwaga: IIRC zarówno
$'string'
i$"string"
może nie znaleźć wsparcia dla różnych powłok. Ludzie z innych powłok przyglądają się im nie tylko z ciekawością, ale także zastanawiają się, czy można tego uniknąć w celu przenoszenia skryptów.źródło
ksh93
również rozumie$'...'
.$'xxx'
nie jest baszizmem, ale po raz pierwszy został wprowadzonyksh
kilka lat wcześniejbash
. Obecnie jest również wspierany przezzsh
abusybox sh
i jest w trakcie sprawdzania przez standard POSIX.