echo
Intenté ejecutar una nueva línea usando e intenté seguir dos comandos:
Primer comando:
echo $'Hello World\nThis is a new line'
Respuesta:
Hello World This is a new line
Segundo comando:
echo $"Hello World\nThis is a new line"
Respuesta:
Hello World\nThis is a new line
Mi pregunta es ¿cuál es la diferencia entre la secuencia envuelta con $' '
vs cadena envuelto con $" "
en bash
's echo
?
"weak quote"
y'strong quote'
son diferentes de$'C String'
y$"I18N String"
.Respuestas:
Como se explica aquí , la sintaxis
$'string'
especifica una cadena de estilo C que incluye caracteres mágicos escapados, como\n
para una nueva línea.$"string"
es para la expansión I18N, que no tiene tales escapes mágicos.Tenga en cuenta que estos son distintos de los más comunes
"string"
(cita débil) y'string'
(cita fuerte).fuente
El
$
en el comienzo de la cadena en:hace que las secuencias de escape sean interpretadas.
Manual de referencia de Bash [dice]
Pero
Es completamente diferente. Este [artículo] sobre traducción específica del entorno local dice:
Nota: IIRC ambos
$'string'
y$"string"
pueden no encontrar soporte entre diferentes shells. No solo las personas de otros shells los miran con curiosidad, sino que también debaten sobre si esto podría evitarse para la portabilidad del script.fuente
ksh93
También entiende$'...'
.$'xxx'
No es un bashismo, pero fue introducido porksh
varios años antesbash
. Actualmente también es compatible conzsh
ybusybox sh
y está siendo revisado por el estándar POSIX.