Tous les deux
echo `date`
et
echo "`date`"
affichera la date. La sortie de ce dernier ressemble à la sortie de l'exécution datepar elle-même.
Il y a cependant une différence: celui entouré de "guillemets "sera envoyé à en echotant qu'argument unique. Les guillemets encapsulent la sortie de la commande entière en un seul argument. Comme echoil 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 Novont é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 fooqui 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