Page d'accueil » comment » Quelle est la différence entre des citations simples et doubles dans le shell Bash?

    Quelle est la différence entre des citations simples et doubles dans le shell Bash?

    Le fait de mettre du texte entre guillemets est une pratique assez courante sur la ligne de commande, en particulier lorsqu'il s'agit de fichiers comportant des espaces dans les noms. Comment savoir s'il faut utiliser des guillemets simples ou doubles? Jetons un coup d'oeil à la différence, et quand vous devriez utiliser l'un contre l'autre.

    La règle générale est que les guillemets doubles permettent toujours le développement de variables entre guillemets, contrairement aux guillemets simples. Continue de lire.

    Citations avec texte simple

    Si vous insérez simplement quelques mots, peu importe le mot que vous utilisez, ils fonctionneront exactement de la même manière. Par exemple, ces deux commandes créeront un répertoire nommé Test Directory:

    mkdir "Répertoire de test"
    mkdir 'Répertoire de test'

    Les types les plus expérimentés noteront probablement que vous pouvez également utiliser mkdir Test \ Directory si vous le souhaitez..

    Coefficient d'expansion variable

    La différence entre les guillemets simples et les guillemets doubles devient plus importante lorsque vous utilisez des variables en ligne de commande. Par défaut, bash développera une variable telle que $ test dans la chaîne complète. Tout d'abord, nous allons assigner la variable:

    test = "Ceci est un test"

    Maintenant, vous pouvez utiliser cette variable sur la ligne de commande, comme ceci, qui devrait simplement afficher C'est un test à la console:

    echo $ test

    Voici où la différence entre les guillemets simples et doubles devient plus claire: lorsque vous utilisez des guillemets simples, les variables ne seront pas développées. Par exemple, si vous exécutez cette commande:

    echo '$ test'

    Vous ne verrez rien d'autre que '$ test' sur la ligne de commande lorsque vous utilisez des guillemets simples, mais le résultat sera correct lorsque vous utiliserez des guillemets doubles:

    La même chose fonctionne lorsque vous utilisez le caractère 'pour développer une commande sur la ligne de commande. Par exemple, supposons que vous vouliez utiliser le pwd commande depuis une autre commande - vous utiliseriez des backticks pour dire au shell de le développer:

    echo 'pwd' / test

    Si vous étiez dans votre dossier personnel, la sortie ressemblerait à ceci:

    / home / geek / test

    Supposons, par exemple, que vous vous trouviez dans un dossier comportant un espace dans le chemin et que vous souhaitiez utiliser la commande ln pour créer un lien symbolique vers un fichier du répertoire en cours. En règle générale, vous devez spécifier le chemin complet lorsque vous utilisez la commande ln. Il est donc beaucoup plus facile d’utiliser «pwd» pour enregistrer en tapant..

    Regardez ce qui se passe lorsque vous essayez d'utiliser la commande sans inclure de guillemets:

    ln -s 'pwd' / test / home / geek / nom lié

    Au lieu de cela, vous devrez entourer de guillemets:

    ln -s "'pwd' / nom_fichier" / un / autre / chemin

    Pour un exemple plus concret, supposons que nous ayons une structure de dossiers comme celle-ci, où tous les noms de fichiers comportent des espaces:

    Étant donné que la commande unzip ne prend pas en charge l'utilisation de * pour l'exécuter sur tous les fichiers, vous devez utiliser la commande for à la place. Voici où les choses deviennent intéressantes:

    pour f dans * .zip; ne décompressez pas $ f; done

    Oops! On dirait que ça n'a pas marché.

    Nous devrons plutôt utiliser des guillemets doubles autour de la variable $ f, comme ceci:

    pour f dans * .zip; décompressez "$ f"; fait

    Maintenant, chaque fois que la commande for parcourt la boucle, elle exécutera une commande comme celle-ci:

    Décompressez "test 1.zip"

    Bien sûr, il ferait une boucle et exécuterait une commande similaire pour chaque fichier du répertoire..

    Revoyons

    Maintenant que nous avons parcouru les exemples, nous allons simplement passer rapidement en revue au cas où vous l'auriez manqué:

    Double citation

    • Utiliser lorsque vous souhaitez inclure des variables ou utiliser une extension de shell à l'intérieur d'une chaîne.
    • Tous les caractères sont interprétés comme des caractères normaux à l'exception de $ ou 'qui seront développés sur le shell.

    Guillemets simples

    • Tous les caractères entre guillemets simples sont interprétés comme un caractère de chaîne.

    Et termine ainsi la leçon des citations. Utilisez-les judicieusement.