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?
shell
command-substitution
portability
joeytwiddle
quelle
quelle
cmd
) in * sh Schalen veraltet? und Sie werden die Antwort finden.sh
der in der richtigen Umgebung unterstützt wird$(...)
.Antworten:
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.
quelle
Solaris 10 und frühere
/bin/sh
Versionen 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/sh
als 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/sh
bestand darin, zu vermeiden, dass vorhandene Shell-Skripte beschädigt werden, die auf dem nicht konformen Verhalten beruhen.quelle
/bin/sh
...