Was passiert, wenn der folgende Befehl ausgeführt wird? Erklären Sie, warum und wie Sie das Problem beheben können:
$ echo ‘`date`’
Antwort1
Ich vermute, du rennst
echo '`date`'
(beachten Sie die geraden einfachen Anführungszeichen) und erwarten Sie date
die Ausgabe von . Die Shell erweitert Zeichenfolgen niemals in einfachen Anführungszeichen. Sie sollten stattdessen doppelte Anführungszeichen verwenden:
echo "`date`"
oder lass sie einfach fallen
echo `date`
Dies alles ist gleichbedeutend mit
date
aber abgesehen von der Schalenspaltung und dem Aufblähen (wie vonStéphane Chazelas), wodurch Leerzeichen standardmäßig ausgeblendet werden.
Antwort2
Wie veröffentlicht, die äußeren Anführungszeichen sind Unicode-Zeichen U+2018 und U+2019. Dies sind KEINE normalen einfachen Anführungszeichen und haben für die Shell keine besondere Bedeutung. Sie werden einfach wiederholt:
$ echo ‘`date`’
‘Fri Apr 7 19:55:15 EEST 2017’
$
Innerhalb dieser Anführungszeichen stehen Backticks zur Ersetzung von Shell-Befehlen. Der date
Befehl wird ausgeführt und die erfasste Ausgabe ersetzt die date
Zeichenfolge.