GNU/Linux >> Linux Esercitazione >  >> Linux

Qual è la differenza tra $ (roba) e `roba`?

Esistono due sintassi per la sostituzione dei comandi:con parentesi-dollaro e con backtick.
Esecuzione di top -p $(pidof init) e top -p `pidof init` dà lo stesso output. Questi due modi di fare sono la stessa cosa o ci sono differenze?

Risposta accettata:

Le virgolette vecchio stile ` ` trattare i backslash e la nidificazione in modo leggermente diverso. Il nuovo stile $() interpreta tutto ciò che si trova tra ( ) come comando.

echo $(uname | $(echo cat))
Linux

echo `uname | `echo cat``
bash: command substitution: line 2: syntax error: unexpected end of file
echo cat

funziona se le virgolette nidificate sono state salvate:

echo `uname | `echo cat``
Linux

divertimento con il backslash:

echo $(echo '\')
\

echo `echo '\'`

Il nuovo stile $() si applica a tutte le shell conformi a POSIX.
Come ha sottolineato mouviciel, il vecchio stile ` ` potrebbe essere necessario per le shell più vecchie.

A parte il punto di vista tecnico, il vecchio stile ` ` ha anche uno svantaggio visivo:

  • Difficile da notare:I like $(program) better than `program`
  • Facilmente confuso con una virgoletta singola:'`'`''`''`'`''`'
  • Non così facile da digitare (forse nemmeno sul layout standard della tastiera)

(e SE usa ` ` per i propri scopi, è stato un dolore scrivere questa risposta 🙂


Linux
  1. Qual è la differenza tra InnoDB e MyISAM?

  2. Qual è la differenza tra punto e virgola e doppia e commerciale &&?

  3. La differenza tra .exrc e .vimrc?

  4. Qual è la differenza tra un utente normale e un utente di sistema?

  5. La differenza tra '$ . Foo' E '$ ./foo'??

Qual è la differenza tra Linux e Unix?

La differenza tra Getty e Agety?

La differenza tra ~/.profile e ~/.bash_profile?

Qual è la differenza tra stampa e stampa in Awk?

Che cos'è un hypervisor? Qual è la differenza tra il tipo 1 e 2?

Qual è la differenza tra curl e Wget?