Il y a plusieurs questions/questions ici, je vais donc répéter chaque section de l'affiche du texte, bloc-cité, et suivie par ma réponse.
Quelle est la syntaxe préférée, et pourquoi? Ou sont-ils assez bien sont-ils interchangeables?
Je dirais que l' $(some_command)
formulaire est préféré au cours de la `some_command`
formulaire. La deuxième forme, à l'aide d'une paire de backquotes (le caractère"`", également appelé backtick et un accent grave), l'historique est le moyen de le faire. La première forme, en utilisant le signe du dollar et, entre parenthèses, est une nouvelle POSIX forme, ce qui signifie qu'il est probablement la plus standard de la manière de le faire. À son tour, je pense que cela signifie qu'il est plus susceptible de travailler correctement avec les différents environnements et différents *nix implémentations.
Une autre raison de préférer la première (POSIX) est qu'il est plus facile à lire, surtout quand la commande substitutions sont imbriqués. De Plus, avec le backtick forme, le backtick caractères doivent être anti-slash-échappé dans le imbriqués (intérieure) de commande des substitutions.
Avec la POSIX formulaire, vous n'avez pas besoin de le faire.
Quant à savoir si ils sont interchangeables, et bien, je dirais que, en général, ils sont interchangeables, sauf les exceptions que vous avez mentionné pour des caractères d'échappement. Cependant, je ne sais pas et ne peut pas dire que tous les coquillages et modernes *nixes soutien les deux formes. Je doute qu'ils le font, surtout les plus âgés coquilles/plus *nixes. Si j'étais vous, je ne dépendent pas de l'interchangeabilité sans lancer quelques tests simples de chaque formulaire sur toute la coque/*nix implémentations que vous envisagez d'exécuter fini les scripts.
J'ai tendance à privilégier la première, tout simplement parce que mon éditeur de texte semble savoir ce que c'est, et ne la coloration syntaxique de manière appropriée.
Il est malheureux que votre éditeur ne semble pas à l'appui de la POSIX forme; peut-être que vous devriez vérifier pour voir si il y a une mise à jour de votre éditeur de texte qui prend en charge les normes POSIX façon de faire. Long shot peut-être, mais qui sait? Ou, peut-être vous devriez envisager d'essayer un autre éditeur.
GGG, quel éditeur de texte que vous utilisez???
J'ai lu ici que les caractères échappés agir un peu différemment dans chaque cas, mais il n'est pas clair pour moi dont le comportement est préférable, ou si elle dépend juste de la situation.
Je dirais que cela dépend de ce que vous essayez d'accomplir; en d'autres termes, si vous utilisez des caractères d'échappement avec la substitution de commande ou pas.
Côté question: Est-ce une mauvaise pratique à utiliser à la fois des formes dans un script, par exemple lors de l'imbrication de commande des substitutions?
Eh bien, il pourrait rendre le script un peu plus facile à LIRE (typographiquement parlant), mais plus difficile à COMPRENDRE! Quelqu'un de lire votre script (ou VOUS, en le lisant, six mois plus tard!) serait probablement se demander pourquoi vous n'avez pas simplement s'en tenir à une forme ou l'autre, à moins que de vous mettre une sorte de remarque au sujet de pourquoi vous avez fait cela dans les commentaires. De Plus, le mélange des deux formes dans un même script ferait que le script moins susceptibles d'être portable: pour que le script fonctionne correctement, le shell qui est l'exécution de la il a à soutenir à la FOIS les formes, et pas seulement une forme ou l'autre.
Pour faire un script shell compréhensible, je serais personnellement préfèrent coller à une forme ou l'autre tout au long d'un script, à moins qu'il y a de bonnes raisons de faire autrement. De plus, je préfère la POSIX forme sur la forme plus ancienne, de nouveau, à moins qu'il y a de bonnes raisons de faire autrement.
Pour en savoir plus sur le sujet de la substitution de commande, et les deux formes différentes de le faire, je vous suggère de vous référer à la section sur la substitution de commande dans le O'Reilly livre "Classic Shell Scripting", deuxième édition, par Robbins et Beebe. Dans cette section, les auteurs affirment que l'POSIX formulaire de commande de substitution "est recommandé pour tous les nouveaux développements." Je n'ai aucun intérêt financier dans ce livre, c'est juste celui que j'ai (et d'amour) sur la création de scripts shell, même si c'est plus pour l'intermédiaire ou avancé, les scripts shell, et pas vraiment pour le début de scripts shell.
-B.