Beide
echo `date`
und
echo "`date`"
zeigt das Datum an. Die Ausgabe von letzterem sieht aus wie die Ausgabe date
von sich selbst ausgeführt.
Es gibt jedoch einen Unterschied: Der in "
Anführungszeichen eingeschlossene "
wird echo
als einzelnes Argument an gesendet . Die Anführungszeichen kapseln die Ausgabe des gesamten Befehls als ein Argument. Da echo
nur die Argumente der Reihe nach mit Leerzeichen dazwischen ausgedruckt werden, sieht es im Grunde gleich aus.
Hier ist ein Beispiel für den subtilen Unterschied:
echo `date`
produziert:
Fri Nov 1 01:48:45 EST 2013
aber:
echo "`date`"
produziert:
Fri Nov 1 01:48:49 EST 2013
Beachten Sie, dass die beiden nachfolgenden Leerzeichen Nov
ohne Anführungszeichen auf eins reduziert wurden. Dies liegt daran, dass die Shell jedes durch Leerzeichen getrennte Element analysiert und das Ergebnis als 6 Argumente an echo sendet. Wenn Sie es zitieren, erhält echo ein einziges Argument und die Anführungszeichen behalten den Raum bei.
Dies wird bei Befehlen, die kein Echo sind, viel wichtiger. Stellen Sie sich zum Beispiel einen Befehl vor foo
, der zwei Argumente benötigt: ein Datum und eine E-Mail-Adresse.
Dies funktioniert in diesem Szenario:
foo "`date`" joeuser@example.com
Dies wird das Skript jedoch verwirren, indem 7 Argumente gesendet werden:
foo `date` joeuser@example.com