Наскільки я розумію, що більш сучасний $(...)
синтаксис заміни команд віддається перевагу над `
синтаксисом, що базується на старій основі, через легше і менш схильне до помилок синтаксис та уникнути помилок.
Крім того, здається, що більшість /bin/sh
типів снарядів в сучасному режимі використовують підтримку $(…)
:
- баш
- ash (і тому BusyBox, так що найбільше вбудований Linux)
- тире
- FreeBSD / бін / ш
І $(…)
визначається IEEE 1003.1.
Тому у мене є 2 дуже пов'язаних питання:
- Чи є якась причина використовувати `у новій розробці скриптів оболонки, якщо ви не знаєте про конкретну стару систему, над якою буде потрібно запускати сценарій?
- Чи є якась причина не навчати студентів програмування UNIX просто писати
$(...)
та обговорювати`
лише як застарілий варіант, з яким вони, можливо, зіткнуться, якщо читатимуть сценарії оболонок інших розробників (і, можливо, знадобляться, якщо вони працюють із дійсно старою системою чи нестандартною з якоїсь причини)?
$()
- shift + 4,9, shift + 0 - 5 натискань клавіш;
`...`
. Він призначений для зворотної переносимості лише з оболонкою Bourne (як у оболонки Bourne^
(так само, як|
) для зворотної переносимості з оболонкою Thomson). Однак зауважте, що(t)csh
цього немає$(...)
(але використовувати їх чи викладати їх також не має сенсу).