
Tentei criar um arquivo de texto em um script bash.
O echo
comando 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 echo
comando 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
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)