Qual é a diferença entre aspas simples e duplas no Bash Shell?
Incluir texto entre aspas é uma prática bastante comum na linha de comando, especialmente ao lidar com arquivos que possuem espaços nos nomes, mas como você sabe se deve usar aspas simples ou duplas? Vamos dar uma olhada na diferença, e quando você deve usar um contra o outro.
A regra geral é que as aspas duplas ainda permitem a expansão de variáveis entre aspas e aspas simples não. Continue lendo.
Citações com texto simples
Se você está simplesmente anexando algumas palavras de texto, realmente não importa qual delas você usa, pois ambas funcionarão exatamente da mesma forma. Por exemplo, esses dois comandos criarão um diretório denominado Diretório de Teste:
mkdir "Diretório de teste"
mkdir 'Test Directory'
Tipos mais experientes provavelmente notarão que você também pode usar o mkdir Test \ Directory se você quiser.
Expansão Variável Shell
A diferença entre aspas simples e duplas se torna mais importante quando você está lidando com variáveis na linha de comando - por padrão, o bash vai expandir uma variável como $ test para a string completa. Primeiro, vamos atribuir a variável:
test = "Este é um teste"
Agora você pode usar esta variável na linha de comando, como esta, que deve simplesmente sair Isto é um teste para o console:
echo $ test
Aqui é onde a diferença entre aspas duplas e simples fica mais clara - quando você usa aspas simples, as variáveis não serão expandidas. Por exemplo, se você executar este comando:
echo '$ test'
Você não verá nada além de '$ test' na linha de comando quando usar aspas simples, mas a saída será correta quando usar aspas duplas:
A mesma coisa funciona quando você usa o 'caractere para expandir um comando na linha de comando. Por exemplo, digamos que você queria usar o pwd comando de dentro de outro comando, você usaria backticks para dizer ao shell para expandi-lo:
eco 'pwd' / test
Se você estivesse em sua pasta pessoal, veria uma saída assim:
/ home / geek / test
Digamos, por exemplo, que você esteja em uma pasta que tenha um espaço no caminho e queira usar o comando ln para criar um link simbólico para um arquivo no diretório atual. Você geralmente precisa especificar o caminho completo ao usar o comando ln, então é muito mais fácil usar o 'pwd' para salvar a digitação.
Veja o que acontece quando você tenta e usa o comando sem colocar entre aspas:
ln -s 'pwd' / teste / home / geek / linkedname
Em vez disso, você precisará cercar aspas:
ln -s "'pwd' / nome_do_arquivo" / algum / outro / caminho
Para um exemplo mais concreto, vamos supor que temos uma estrutura de pastas como este exemplo, em que todos os nomes de arquivos possuem espaços:
Como o comando unzip não suporta o uso de * para executá-lo em todos os arquivos, você precisará usar o comando for. Aqui é onde as coisas ficam interessantes:
para f em * .zip; faça unzip $ f; done
Opa! Parece que não funcionou.
O que precisamos fazer é usar aspas duplas em torno da variável $ f, assim:
para f em * .zip; descompacte "$ f";
Agora, toda vez que o comando for passar pelo loop, ele irá executar um comando como este:
descompacte "teste 1.zip"
Claro que iria percorrer e executar um comando semelhante para cada arquivo no diretório.
Vamos revisar
Agora que analisamos os exemplos, analisaremos rapidamente caso você tenha perdido:
Aspas duplas
- Use quando você quiser incluir variáveis ou usar a expansão de shell dentro de uma string.
- Todos os caracteres são interpretados como caracteres regulares, exceto por $ ou 'que será expandido no shell.
Citações Únicas
- Todos os caracteres entre aspas simples são interpretados como um caractere de string.
E assim termina a lição das citações. Use-os sabiamente.