Substitution de commande entre guillemets
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
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.