В чем разница между $ (...) и `...` - PullRequest
10 голосов
/ 19 января 2009

Вопрос так же прост, как указано в заголовке: в чем разница между следующими двумя выражениями?

$(...)
`...`

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

test1=$(ls)
test2=`ls`

Ответы [ 3 ]

9 голосов
/ 19 января 2009

Результат тот же, но более новый синтаксис $ () гораздо понятнее и проще для чтения. По крайней мере, вдвойне, когда пытаешься гнездиться. Со старым синтаксисом вложение нелегко, но с новым он отлично работает.

Сравнить:

$ echo $(ls $(pwd))

против

$ echo `ls \`pwd\``

Вам нужно избегать встроенных обратных символов, так что гораздо сложнее как печатать, так и читать.

Согласно этой странице есть, по крайней мере, одно незначительное различие в том, как они обрабатывают встроенные двойные обратные слеши.

5 голосов
/ 19 января 2009

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

5 голосов
/ 19 января 2009

Возможно, вы захотите прочитать man bash:

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

Это в разделе "Подстановка команд" на странице руководства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...