Назад | Перейти на главную страницу

Bash: две команды в скобках с долларом не ведут себя одинаково

Я не понимаю, почему в Баше:

Обратные кавычки дают те же результаты.

Есть ли хорошая практика использования этой нотации? Есть ли у команды id что-то особенное относительно ее использования таким образом?

Ниже приведены некоторые детали, поскольку кажется, что это работает в других системах:

Я заметил небольшую разницу между опубликованной командой:

echo $(id -un)

и сообщение об ошибке для него:

id: –un: No such user

Два «дефиса» разные, второй немного длиннее. Похоже, сообщение об ошибке было скопировано и вставлено из оригинала, но команда была введена повторно. Исходная команда, скорее всего, содержит дефис неправильного типа. Это объясняет, почему никто не может воспроизвести сообщение об ошибке.

Подобная ошибка чаще всего имеет одну из двух причин:

  • Код был скопирован с веб-сайтов, где он был набран с использованием плохого средства форматирования / подсветки синтаксиса.

  • Код был набран в неподходящей среде редактирования, например в Microsoft Word. Word может изменить что-то, что вы вводите, в более типографский, но неожиданный вариант, например, разные дефисы, разные кавычки или другой знак пробела.


Так совпало, что на Codegolf, где в одном из ответов использовался аналогичный «трюк», чтобы получить разницу, которая даже не была видна: https://codegolf.stackexchange.com/a/23258/16287