Eu estava tentando executar uma nova linha usando echo
e tentei seguir dois comandos:
Primeiro comando:
echo $'Hello World\nThis is a new line'
Resposta:
Hello World This is a new line
Segundo comando:
echo $"Hello World\nThis is a new line"
Resposta:
Hello World\nThis is a new line
A minha pergunta é qual é a diferença entre a corda enrolada com $' '
vs corda enrolada com $" "
em bash
's echo
?
"weak quote"
e'strong quote'
são diferentes de$'C String'
e$"I18N String"
.Respostas:
Conforme explicado aqui , a sintaxe
$'string'
especifica uma string no estilo C que inclui caracteres de escape mágicos, como\n
para uma nova linha.$"string"
é para expansão I18N, que não tem escapatória mágica.Observe que eles são distintos dos mais comuns
"string"
(cotação fraca) e'string'
(cotação forte).fonte
O
$
no início da string em:faz com que as seqüências de escape sejam interpretadas.
Manual de referência do Bash [diz]
Mas
é completamente diferente. Este [artigo] sobre tradução específica do código do idioma diz:
Nota: IIRC ambos
$'string'
e$"string"
pode não encontrar suporte entre diferentes reservatórios. Não apenas as pessoas de outros reservatórios olham para eles com curiosidade, mas também debatem se isso pode ser evitado quanto à portabilidade do script.fonte
ksh93
também entende$'...'
.$'xxx'
não é um basismo, mas foi introduzidoksh
vários anos antesbash
. Atualmente é também apoiado porzsh
ebusybox sh
e está sob revisão pelo padrão POSIX.