J'essayais d'exécuter une nouvelle ligne en utilisant echo
et j'ai essayé de suivre deux commandes:
Première commande:
echo $'Hello World\nThis is a new line'
Réponse:
Hello World This is a new line
Deuxième commande:
echo $"Hello World\nThis is a new line"
Réponse:
Hello World\nThis is a new line
Ma question est quelle est la différence entre chaîne enveloppé avec $' '
vs chaîne enveloppé avec $" "
dans bash
« s echo
?
"weak quote"
et'strong quote'
sont différents de$'C String'
et$"I18N String"
.Réponses:
Comme expliqué ici , la syntaxe
$'string'
spécifie une chaîne de style C qui inclut des caractères d'échappement magiques, comme\n
pour une nouvelle ligne.$"string"
est pour l'extension I18N, qui n'a pas de telles évasions magiques.Notez que ceux-ci sont distincts des plus courants
"string"
(cotation faible) et'string'
(cotation forte).la source
Le
$
au début de la chaîne dans:provoque l'interprétation des séquences d'échappement.
Manuel de référence Bash [dit]
Mais
est complètement différent. Cet [article] sur la traduction spécifique aux paramètres régionaux dit:
Remarque: IIRC à la fois
$'string'
et$"string"
peut ne pas trouver de support entre différents obus. Non seulement les gens d'autres shells les regardent avec curiosité, mais ils discutent également de savoir si cela pourrait être évité pour la portabilité des scripts.la source
ksh93
comprend également$'...'
.$'xxx'
n'est pas un bashisme mais a été introduit pour la première foisksh
plusieurs années auparavantbash
. Il est actuellement également pris en charge parzsh
etbusybox sh
est en cours d'examen par la norme POSIX.