bash - terminator rename tab



Warum erlaubt Ksh ungepaarte Anführungszeichen, während Bash nicht? (1)

In der Korn-Shell können sowohl die hinteren Ticks als auch die Anführungszeichen nicht übereinstimmen, der Tokenizer versucht zu erraten, wo beide enden und sie entsprechend abgleichen.

Beispiele:

/home/ufierro # echo "`echo ah" 
+ echo ah
+ echo ah
ah

/home/ufierro # echo `echo 'hello world` 
+ echo 'hello world'
+ echo hello world
hello world

Beachten Sie, dass beide Beispiele einen anderen Fall für das oben erwähnte Verhalten zeigen. Das erste Beispiel zeigt, wie während des Parsens ein einzelner Back-Tick in Anführungszeichen abgeschlossen wurde und das zweite Beispiel zeigt, wie auch ein einzelnes Zitat innerhalb der Back-Ticks abgeschlossen wurde.

Wenn ich den folgenden Befehl ausführe, bekomme ich in der Bash-Shell einen Fehler, aber auf der Korn-Shell läuft es einwandfrei. Der einzige Unterschied ist das Fehlen eines einzelnen Zitats am Ende von awk, nach}. Kannst du mir helfen zu verstehen warum?

echo `echo "a b c d" | awk '{ print $1 }`




ksh