/ / Каква е разликата между $ (...) и `...` - баш, синтаксис

Каква е разликата между $ (...) и `...` - баш, синтаксис

Въпросът е толкова прост, колкото е посочено в заглавието: Каква е разликата между следните два израза?

$(...)
`...`

Например, са двете променливи test1 и test2 различен?

test1=$(ls)
test2=`ls`

Отговори:

9 за отговор № 1

Резултатът е същият, но по-новият $ () синтаксис е много по-ясен и по-лесен за четене. Поне два пъти, когато се опитвате да гнездят. Гнездяването не е лесно със стария синтаксис, но работи добре с новия.

Сравнете:

$ echo $(ls $(pwd))

срещу:

$ echo `ls `pwd``

Трябва да избягате от вградените контури, затова е много по-сложно и за типа, и за четенето.

Според тази страница, има поне една малка разлика в начина, по който се отнасят към вградените двойни обратно наклонени черти.


5 за отговор № 2

Може да искате да прочетете man bash:

Когато старият стил на заместване под формата на замянасе използва, обратно наклонена черта запазва буквалното си значение, освен когато е последвано от $, `, или. Първият кореспондент, предхождан от обратна наклонена черта, прекратява заместването на командата. Когато използвате формуляра $ (команда), всички знаци между скобите съставляват командата; никой не се отнася специално към тях.

Това е под раздел "Подмяна на командването" на ръководството.


5 за отговор № 3

Използвайки `` `е историческият синтаксис, POSIX е възприела сегашния стандарт $ (...) синтаксис. виждам Раздел 2.6.3