GNU/Linux >> Znalost Linux >  >> Linux

Jaký je rozdíl mezi $(stuff) a `stuff`?

Existují dvě syntaxe pro substituci příkazů:s dolarovými závorkami a se zpětným zaškrtnutím.
Spuštěním top -p $(pidof init) a top -p `pidof init` dává stejný výstup. Jsou tyto dva způsoby, jak dělat totéž, nebo existují rozdíly?

Přijatá odpověď:

Staré zpětné uvozovky ` ` zacházet se zpětnými lomítky a vnořením trochu jinak. Nový styl $() interpretuje vše mezi ( ) jako příkaz.

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

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

funguje, pokud jsou vnořené zpětné uvozovky escapovány:

echo `uname | `echo cat``
Linux

zábava se zpětným lomítkem:

echo $(echo '\')
\

echo `echo '\'`

Nový styl $() platí pro všechny shelly vyhovující POSIX.
Jak poukázal mouviciel, starý styl ` ` může být nezbytné pro starší shelly.

Kromě technického hlediska, starý styl ` ` má také vizuální nevýhodu:

  • Těžko postřehnutelné:I like $(program) better than `program`
  • Snadno zaměnitelné s jedinou uvozovkou:'`'`''`''`'`''`'
  • Není tak snadné psát (možná ani na standardním rozložení klávesnice)

(a SE používá ` ` pro vlastní účely byla bolest psát tuto odpověď 🙂


Linux
  1. Jaký je rozdíl mezi Sudo Su – a Sudo Su –?

  2. Rozdíl mezi Getty a Agetty?

  3. Rozdíl mezi .exrc a .vimrc?

  1. Rozdíl mezi „$ . Foo“ A „$ ./foo“??

  2. Linux – Jaký je rozdíl mezi `su -` a `su –login`?

  3. Rozdíl mezi ~/.profile a ~/.bash_profile?

  1. Rozdíl mezi [[ $a ==Z* ]] a [ $a ==Z* ]?

  2. Jaký je rozdíl mezi středníkem a dvojitým ampersandem &&?

  3. Rozdíl mezi Nss a Pam?