Ich habe versucht, eine neue Zeile mit den echo
folgenden zwei Befehlen auszuführen:
Erster Befehl:
echo $'Hello World\nThis is a new line'
Antwort:
Hello World This is a new line
Zweiter Befehl:
echo $"Hello World\nThis is a new line"
Antwort:
Hello World\nThis is a new line
Meine Frage ist , was ist der Unterschied zwischen Schnur umwickelt mit $' '
vs Schnur umwickelt mit $" "
in bash
‚s echo
?
"weak quote"
und'strong quote'
unterscheiden sich von$'C String'
und$"I18N String"
.Antworten:
Wie hier erläutert , gibt die Syntax
$'string'
eine Zeichenfolge im C-Stil an, die magisch\n
maskierte Zeichen enthält, z. B. für eine neue Zeile.$"string"
ist für die I18N-Erweiterung, der keine solche Magie entgeht.Beachten Sie, dass sich diese von den häufigeren
"string"
(schwaches Zitat) und'string'
(starkes Zitat) unterscheiden.quelle
Das
$
am Anfang des Strings in:bewirkt, dass Escape-Sequenzen interpretiert werden.
Bash Referenzhandbuch [sagt]
Aber
ist ganz anders. In diesem [Artikel] zur länderspezifischen Übersetzung heißt es:
Hinweis: IIRC beide
$'string'
und$"string"
möglicherweise keine Unterstützung zwischen verschiedenen Schalen. Menschen aus anderen Shells sehen sie nicht nur neugierig an, sondern diskutieren auch darüber, ob dies aus Gründen der Skriptportabilität vermieden werden könnte.quelle
ksh93
versteht auch$'...'
.$'xxx'
ist kein Bashismus, wurde aber erstksh
einige Jahre zuvor eingeführtbash
. Es wird derzeit auch vom POSIX-Standard unterstütztzsh
und wird derzeitbusybox sh
geprüft.