Frequentemente, vejo tutoriais na Web ou postagens neste site que fazem uso intenso dos seguintes caracteres na linha de comando. Muitas vezes, parece que eles são usados para fins bastante semelhantes. Quais são as diferenças entre eles quando usados na linha de comando ou na programação de shell? Para que finalidade eu uso qual deles?
" " double quotes
' ' single quotes
` ` backticks
command-line
bash
NES
fonte
fonte
\
sempre é tratado literalmente entre aspas simples, mesmo que preceda a'
. Após uma abertura'
, a próxima'
é sempre interpretada como a citação final. Algo como citar'
em uma sequência de aspas simples pode ser alcançado terminando a citação, escapando'
individualmente e iniciando a citação novamente. Ou seja, embora\'
não funcione entre abrir e fechar'
caracteres,'\''
funciona. (Veja Gilles de correção para um dos meus posts quando eu tinha feito o mesmo erro para mais detalhes.)Isso é explicado muito bem na seção relevante do manual do bash. Resumidamente, qualquer coisa entre aspas simples é interpretada literalmente. Então, por exemplo:
Compare isso com as versões não citadas:
As aspas duplas permitem a expansão variável (também a expansão do histórico e outras coisas). Basicamente, você as usa quando está lidando com algo que deseja ver expandido. Por exemplo:
Em outras palavras, aspas simples protegem completamente uma string do shell, enquanto aspas duplas protegem algumas coisas (espaços, por exemplo), mas permitem que variáveis e caracteres especiais sejam expandidos / interpretados corretamente.
fonte
Aspas simples (
''
) são usadas para preservar o valor literal de cada caractere entre aspas.Usando aspas duplas (
""
), o valor literal de todos os caracteres incluídos é preservado, exceto o sinal de cifrão ($
), os bastidores (aspas simples anteriores``
) e a barra invertida (\
).Quando colocado dentro de back-ticks (
``
), o shell interpreta algo como "a saída do comando dentro dos back-ticks". Isso é chamado de "substituição de comando", pois a saída do comando é substituída pelo próprio comando.referências:
fonte
Aspas simples impedem a expansão da variável, enquanto as aspas duplas o permitem.
fonte
Estou apenas falando em geral, mas:
""
- Usado para processar algumas informações dentro deles antes da saída. (Como no PHP.)name=NESS; echo "Hello my name is $name"
irá produzir:Hello my name is NESS
''
- Usado para mostrar a saída como está. (Também como no PHP.)Hello my name is $name
Portanto, a diferença entre aspas duplas e simples é que aspas duplas processam a variável e mostram o valor, enquanto aspas simples mostram o nome da variável sem processamento.
``
- Usado para citar comandos que são atribuídos posteriormente a outra variável.fonte
Aspas simples incluem um valor que deve ser tomado literalmente: todos os tipos de expansão são suprimidos. Normalmente usado se o valor inclui ou pode incluir espaço em branco (espaço, tabulação, nova linha), ou caracteres especiais (
$
,\
,`
) que o usuário não quer ser expandido / tratados especialmente pelo shell.Aspas duplas incluem um valor que terá variáveis e a substituição de caracteres concluída. Necessário quando a saída pode conter espaços em branco e deve ser designado como um valor único.
As aspas traseiras incluem um comando, cujos resultados são desejados como valor. Os reservatórios mais recentes permitem o uso
$(...)
no lugar de`...`
. Eu prefiro o método mais novo.O código a seguir pode ajudar a entender o que está acontecendo.
fonte