Tous les deux
echo `date`
et
echo "`date`"
affichera la date. La sortie de ce dernier ressemble à la sortie de l'exécution date
par elle-même.
Il y a cependant une différence: celui entouré de "
guillemets "
sera envoyé à en echo
tant qu'argument unique. Les guillemets encapsulent la sortie de la commande entière en un seul argument. Comme echo
il affiche simplement ses arguments dans l'ordre, avec des espaces entre les deux, il sera fondamentalement le même.
Voici un exemple de la subtile différence:
echo `date`
produit:
Fri Nov 1 01:48:45 EST 2013
mais:
echo "`date`"
produit:
Fri Nov 1 01:48:49 EST 2013
Notez que les deux espaces après Nov
ont été réduits à un sans les guillemets. En effet, le shell analyse chaque élément séparé par des espaces et envoie le résultat à l'écho sous forme de 6 arguments. Lorsque vous le citez, echo reçoit un seul argument et les guillemets conservent l'espace.
Cela devient beaucoup plus important dans les commandes autres que l'écho. Par exemple, imaginez une commande foo
qui souhaite deux arguments: une date et une adresse e-mail.
Cela fonctionnera dans ce scénario:
foo "`date`" joeuser@example.com
Mais cela confondra le script en lui envoyant 7 arguments:
foo `date` joeuser@example.com