GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was ist der Unterschied zwischen $(stuff) und `stuff`?

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 🙂


Linux
  1. Was ist der Unterschied zwischen Sudo Su – und Sudo Su –?

  2. Der Unterschied zwischen Getty und Agetty?

  3. Der Unterschied zwischen .exrc und .vimrc?

  4. Was ist der Unterschied zwischen einem normalen Benutzer und einem Systembenutzer?

  5. Linux – Was ist der Unterschied zwischen `su -` und `su –login`?

Was ist der Unterschied zwischen Linux und Unix?

Was ist der Unterschied zwischen Print und Printf in Awk?

Was ist der Unterschied zwischen Ddrescue, Gddrescue und Dd_rescue?

Was ist ein Hypervisor? Was ist der Unterschied zwischen Typ 1 und 2?

Was ist der Unterschied zwischen Curl und Wget?

Was ist der Unterschied zwischen unlink und rm?