Pagina inicial » como » Qual é a diferença entre aspas simples e duplas no Bash Shell?

    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.