Qual é a diferença entre 'e "?

Qual é a diferença entre 'e "?

Tentei criar um arquivo de texto em um script bash.

O echocomando abrange várias linhas e contém algumas aspas duplas "".

#!/bin/bash 

echo "blabla bla bla bla "blabla" 
bla bla " bla bla bla"
and so on and so on

bla bla

blu bla  "bla bla bla "
bla bla" > /root/bin/bla

Existem muitas aspas duplas "" no echocomando que são indesejáveis.

E eu fiz

#!/bin/bash 

echo 'blabla bla bla bla "blabla" 
bla bla " bla bla bla"
and so on and so on

bla bla

blu bla  "bla bla bla "
bla bla' > /root/bin/bla

Gostaria de saber se existe alguma diferença entre aspas duplas " e aspas simples '

Qual deles tem maior prioridade? É apenas o fato de serem visualmente diferentes?

Responder1

Demanual do bash:

3.1.2.2 Aspas Simples

Colocar caracteres entre aspas simples (''') preserva o valor literal de cada caractere entre aspas. Uma aspa simples não pode ocorrer entre aspas simples, mesmo quando precedida por uma barra invertida.

3.1.2.3 Aspas Duplas

Colocar caracteres entre aspas duplas ('"') preserva o valor literal de todos os caracteres entre aspas, com exceção de '$', '`', '\' e, quando a expansão do histórico está habilitada, '!'. O os caracteres '$' e '`' mantêm seu significado especial entre aspas duplas (consulte Expansões de Shell). A barra invertida mantém seu significado especial apenas quando seguida por um dos seguintes caracteres: '$', '`', '"', ' \' ou nova linha. Entre aspas duplas, as barras invertidas seguidas por um desses caracteres são removidas. As barras invertidas que precedem os caracteres sem significado especial não são modificadas. Uma aspa dupla pode ser colocada entre aspas duplas, precedendo-a com uma barra invertida. Se ativado, a expansão do histórico será executada, a menos que seja exibido um '!' aparecer entre aspas duplas é escapado por uma barra invertida. A barra invertida que precede o '!' não é removido. Os parâmetros especiais '*' e '@' têm um significado especial quando estão entre aspas duplas (consulte Expansão de parâmetros do Shell).

Aqui estão algumas demonstrações práticas do acima:

  • As aspas duplas permitem a avaliação de expansões de parâmetros, mas as aspas simples não:
$ var=foo
$ echo "$var"
foo
$ echo '$var'
$var
  • As aspas duplas permitem a avaliação de escapes de barra invertida, mas as aspas simples não:
$ echo "\\"
\
$ echo '\\'
\\
  • As aspas duplas permitem a avaliação de substituições de comandos ( $(, `), mas as aspas simples não:
$ echo "$(echo bar)"
bar
$ echo '$(echo bar)'
$(echo bar)

informação relacionada