Welche Shells unterstützen die Erweiterung von Dollar-Klammern nicht und erfordern Backticks?


8

Die moderne Empfehlung lautet:

$(...)

anstelle des älteren:

`...`

hauptsächlich zur besseren Lesbarkeit und um die Notwendigkeit zu vermeiden, beim Verschachteln zu entkommen.

Welche Schalen unterstützen die $(...)Form nicht und werden heute noch verwendet?


1
Lesen Sie Have Backticks (dh cmd) in * sh Schalen veraltet? und Sie werden die Antwort finden.
John1024

Darin heißt es: "Der einzige Grund für die Verwendung von Backticks ist die Kompatibilität mit einer echten Bourne-Shell (wie Heirloom)."
Joeytwiddle

1
Ein wichtiger Punkt ist, dass alle nach den 90ern gewarteten Unix-ähnlichen Systeme einen Befehl haben, shder in der richtigen Umgebung unterstützt wird $(...).
Stéphane Chazelas

Antworten:


8

Die ursprüngliche Bourne-Shell, csh oder tcsh unterstützen $()und erfordern keine `` Befehlsersetzung.

Die Bourne-Shell wird unter vielen UNIX-basierten Betriebssystemen nicht mehr als Standard-Shell (/ bin / sh) verwendet. Diese Shells werden jedoch weiterhin von den Betriebssystemherstellern bereitgestellt, da sie aus historischen Gründen weiterhin verwendet werden.

Sowohl AIX als auch HP-UX haben / bin / sh als POSIX-kompatible Shell. Die Bourne-Shell ist unter AIX weiterhin als 'bsh' (jedoch 1995 mit AIX 4.1 veraltet ) und HP-UX 11.11 '/ usr / old / bin / sh' verfügbar (Bourne wurde aus 11.23 entfernt). Ich bin nicht sicher, wann der Wechsel vorgenommen wurde, aber es war vor vielen Jahren.


5

Solaris 10 und frühere /bin/shVersionen werden nicht unterstützt $().

Es wird heute noch verwendet, da Solaris 10 noch verwendet wird. Sun wollte es nicht durch eine standardkonforme Version (bis einschließlich Solaris 10) ersetzen - und weil die meisten Benutzer dies /bin/shals Standard-Shell betrachten und nicht wissen, wie um ein Skript mit einer POSIX-konformen Shell portabel auszuführen .

Suns Motivation, sich nicht zu ändern, /bin/shbestand darin, zu vermeiden, dass vorhandene Shell-Skripte beschädigt werden, die auf dem nicht konformen Verhalten beruhen.


2
@ Cuonglm, ja, ich habe es gerade getestet und kann es bestätigen. Hätte gedacht, dass eher Hurd veröffentlicht wird als Sun / Oracle seine Richtlinien ändert am /bin/sh...
maxschlepzig
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.