kann nicht erkennen, was falsch ist an: $ echo ''date''

kann nicht erkennen, was falsch ist an: $ echo ''date''

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 datedie 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 dateBefehl wird ausgeführt und die erfasste Ausgabe ersetzt die dateZeichenfolge.

verwandte Informationen