Es gibt zwei Syntaxen für die Befehlsersetzung:mit Dollar-Klammern und mit Backticks.
Ausführen von top -p $(pidof init) und top -p `pidof init` gibt die gleiche Ausgabe. Sind diese beiden Vorgehensweisen dasselbe oder gibt es Unterschiede?
Akzeptierte Antwort:
Die Backquotes im alten Stil ` ` behandeln Sie umgekehrte Schrägstriche und Verschachtelungen etwas anders. Das neue $() interpretiert alles zwischen ( ) als Befehl.
echo $(uname | $(echo cat))
Linux
echo `uname | `echo cat``
bash: command substitution: line 2: syntax error: unexpected end of file
echo cat
funktioniert, wenn die verschachtelten Backquotes maskiert werden:
echo `uname | `echo cat``
Linux
Backslash-Spaß:
echo $(echo '\')
\
echo `echo '\'`
Das neue $() gilt für alle POSIX-konformen Shells.
Wie mouviciel betonte, ` ` im alten Stil könnte für ältere Shells notwendig sein.
Abgesehen vom technischen Standpunkt ist das alte ` ` hat auch einen optischen Nachteil:
- Schwer zu bemerken:
I like $(program) better than `program` - Leicht zu verwechseln mit einem einfachen Anführungszeichen:
'`'`''`''`'`''`' - Nicht so einfach zu tippen (vielleicht nicht einmal auf dem Standardlayout der Tastatur)
(und SE verwendet ` ` für eigene Zwecke war es eine Qual, diese Antwort zu schreiben 🙂