Substitution de commande entre guillemets

Sep 17 2020

J'essaye d'écrire un analyseur bash. De nombreuses ressources ont fait référence à ce wiki

Un domaine dans lequel je suis bloqué est pourquoi ce qui suit fonctionnerait

echo "$(echo "hi")"    # output => hi

Selon le wiki, les citations sont analysées avant la substitution de commande. Dans ce cas, pourquoi n'y aurait-il pas une erreur lors de l'analyse du premier ensemble de guillemets doubles ie"$(echo "

Réponses

7 KamilMaciorowski Sep 17 2020 at 13:57

L'article lié dit:

tous les personnages , sauf $, ", `et \perdre tout sens particulier qu'ils pourraient avoir

[c'est moi qui souligne]

Ce qui se passe est $dans $(votre code est toujours spécial. $( )est la syntaxe de la substitution de commande. À propos de la substitution de commandes, à partir du même site :

Notamment, une fois à l'intérieur d'une substitution de commande, le shell commence un tout nouveau contexte de citation. Autrement dit, les guillemets doubles à l'intérieur de la substitution ne correspondent pas aux guillemets doubles en dehors de la substitution.