Ich verstehe, dass die modernere $(...)
Befehlssubstitutionssyntax der altbasierten Syntax vorgezogen wird `
, da die Verschachtelung und die Escape-Syntax einfacher und weniger fehleranfällig sind.
Außerdem scheinen die meisten /bin/sh
Muscheln im modernen Gebrauch Folgendes zu unterstützen $(…)
:
- Bash
- ash (und damit BusyBox, also die meisten Embedded Linux)
- Strich
- FreeBSD / bin / sh
Und $(…)
wird durch IEEE 1003.1 spezifiziert.
Ich habe also zwei sehr verwandte Fragen:
- Gibt es einen Grund, `bei der Neuentwicklung von Shell-Skripten zu verwenden, es sei denn, Sie kennen ein bestimmtes altes System, auf dem das Skript ausgeführt werden muss?
- Gibt es irgendeinen Grund, UNIX-Programmierschülern nicht nur das Schreiben beizubringen
$(...)
und`
nur als veraltete Variante zu diskutieren , auf die sie wahrscheinlich stoßen werden, wenn sie die Shell-Skripte anderer Entwickler lesen (und die sie möglicherweise benötigen, wenn sie mit einem wirklich alten oder nicht standardmäßigen System arbeiten) aus irgendeinem Grund)?
$()
- Shift + 4,9, Shift + 0 - 5 Tastendrücke;
`...`
. Es ist nur für die Abwärtsportabilität mit der Bourne-Shell vorgesehen (wie die Bourne-Shell^
(genauso wie|
) für die Abwärtsportabilität mit der Thomson-Shell). Beachten Sie jedoch, dass(t)csh
dies nicht der Fall ist$(...)
(aber es hat auch keinen Sinn, sie zu verwenden oder zu unterrichten).