Qual é a diferença entre "e '- e quando usá-lo? [duplicado]

9

Estou acostumado a digitar strings com aspas, mas a partir de agora, quando navego por arquivos de configuração e recomendações, vejo apóstrofos sendo usados.

Eu freqüentemente copio apóstrofos em meus arquivos de configuração e os substituo por aspas para que o código se encaixe.

Mas qual é a diferença deles? (Eu principalmente visar isso para bash. Se outro script baseado em Linux faz diferente, isso seria um extra.)

Por exemplo:

echo "Hello World!" e echo 'Hello World!'

Tem algo a ver que talvez eu não possa usar variáveis (formatadas) se eu usar uma ou outra, ou é simplesmente uma preferência pessoal?

    
por Trollwut 10.02.2017 / 14:17

3 respostas

15

Existe uma diferença entre aspas simples e duplas, e não é uma questão de estilo. Citações simples irão literalmente ecoar o que você escreve, então você pode ter certeza de que o que você escreve é o que será impresso. Por outro lado, as aspas duplas interpolarão o valor das variáveis.

De man bash :

Enclosing characters in single quotes preserves the literal value of each character within the quotes. A single quote may not occur between single quotes, even when preceded by a backslash.

Enclosing characters in double quotes preserves the literal value of all characters within the quotes, with the exception of $, backtick, \, and, when history expansion is enabled, !. The characters $ and backtick retain their special meaning within double quotes. The backslash retains its special meaning only when followed by one of the following characters: $, ', ", \, or newline. A double quote may be quoted within double quotes by preceding it with a backslash. If enabled, history expansion will be performed unless an ! appearing in double quotes is escaped using a backslash. The backslash preceding the ! is not removed.

Então, no seu exemplo:

#!/bin/bash
PLACE="World"
echo "Hello $PLACE !"
echo 'Hello $PLACE !'

resultará nessa saída:

Hello World !
Hello $PLACE !
    
por 10.02.2017 / 14:24
5

link

As variáveis de aspas duplas internas são expandidas.

As aspas simples impedem a interpolação de string:

Enclosing characters in single quotes preserves the literal value of each character within the quotes. A single quote may not occur between single quotes, even when preceded by a backslash.

Há também a notação $'…' , que permite o uso de ANSI C seqüências de escape.

    
por 10.02.2017 / 14:26
0

Isso depende da linguagem. Você mencionou bash, e as outras respostas se concentraram nisso, mas a maneira como você formulou sua pergunta sugere que você acha que há uma regra geral aqui. Não há.

Por exemplo, pensando em algumas línguas aleatórias que vêm à mente:

  • Em bash (e outros shells iguais a sh ), "..." expande variáveis dentro da string e '...' não. O céu sabe o que o csh faz.
  • No Python, os dois são equivalentes e você pode escolher entre eles com base no gosto ou na conveniência.
  • Em idiomas semelhantes ao C, "..." é uma string, 'x' é um caractere único e 'abc' é um erro de sintaxe.
  • Em lisps, "..." é uma string e ' "cita" o que vier depois dela.
  • Em um arquivo de configuração, as aspas 'corretas' podem ser '...' ou '...' ou "..." ou [...] ou |...| ou qualquer que seja o nome do autor do programa que está sendo configurado ideia.
  • Em Postscript, as strings são marcadas por (...) .
  • Em Fortran (um pouco antigo), uma string de cinco caracteres "olá" pode ser escrita como 5Hhello (ou seja, esse é um exemplo de cadeias marcadas com nada parecido com citações).
  • Em inglês eles aninham 'Eu disse' olá 'para ele' ou “Eu disse 'olá' para ele” dependendo de qual lado do Atlântico seu editor vive em.
  • Tenho certeza de que podemos pensar em alguns exemplos ainda mais arcanos, com o tempo.

Destes, somente o Python é uma questão de gosto ou estilo. As cotações são apenas mais um pouco da sintaxe da linguagem.

    
por 11.02.2017 / 00:10

Tags