Execution de commandes : `cmd` vs $(cmd) - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 20-05-2009 à 17:03:42
A priori, aucunes
Marsh Posté le 20-05-2009 à 17:12:34
J'en connais au moins une, $(cmd) ne fonctionne pas sous shell alors que `cmd` fonctionne.
Je suis sûr qu'il y a une petite subtilité qui fait que $( ) est apparu dans les shells plus "évolués"
Marsh Posté le 20-05-2009 à 17:26:37
Excellente question...
On peut imbriquer les $(), mais pas les ``
`` fonctionne sous csh (et tcsh) mais pas $()
Sinon, je me demande si j'ai pas déjà posé la question dans blabla...
Marsh Posté le 20-05-2009 à 17:51:48
On peut imbriquer les ` !
Essaye : echo `echo \`echo blabla\``, retourne bien "blabla" et non "echo blabla" !
$() fonctionne sous ksh et bash uniquement alors ?
Pourquoi l'avoir introduit dans ces shells ?? Il y a forcément une explication rationnelle
Marsh Posté le 20-05-2009 à 18:08:05
Je dirais alors que les $() sont alors plus facilement imbriquable que les ``
Marsh Posté le 20-05-2009 à 19:57:05
En effet, sur pas mal de "vieux" shells par défaut, (genre Sol8/9), t'auras pas accès à $(), donc t'es obligé de passer par ``, moins lisible.
Et faut oublier la possiblité de faire un commande | while read A B C; do ... done
Marsh Posté le 21-05-2009 à 16:16:00
Extrait de man bash:
Citation : Command Substitution |
Marsh Posté le 23-05-2009 à 01:26:55
visiblement $() c'est typiquement un truc implémenté dans bash, et pas dans les autres shell
Il est quand même très comique bash côté syntaxe
Marsh Posté le 23-05-2009 à 08:17:59
$() fonctionne aussi sous ksh et zsh.
Marsh Posté le 25-05-2009 à 11:04:08
[Albator] a écrit : Extrait de man bash: |
Si je ne m'abuse cela ne donne pas le pourquoi de l'implémentation de $(), cela explique juste quelques différences entre les deux.
Dans la pratique, les 2 syntaxes peuvent donner le même résultat, même si il est vrai que $() semble plus simple au niveau lecture et concaténation.
Je penche donc pour cette explication, même si pour mes scripts qui sont susceptibles d'êtres lancés aussi bien en shell qu'en ksh bash ... je vais devoir opter pour les bonnes vieilles "backquotes".
Merci pour vos avis.
Marsh Posté le 28-05-2009 à 02:37:39
Perso, j'utilise tout le temps $( ) car les ` ` sont considérés comme dépréciés.
Les seul cas ou je les utilise encore c'est quand j'en imbrique plusieurs, c'est plus lisible comme ça :
Code :
|
( pour les curieux ou les sceptiques, le "$(echo `...`)" permet de retirer les espaces et indentations inutiles un peu come le ferais xarg )
Marsh Posté le 20-05-2009 à 16:04:59
Bonjour,
J'ai une question qui paraitra peut-être triviale, mais je me suis rendu compte qu'il existait une alternative aux quotes `` pour exécuter une commande dans une autre, c'est $( ).
Par exemple cat `ls` revient à cat $(ls)
Connaissez vous la différence entre ces deux possibilités ?