Насколько я понимаю, более современный $(...)синтаксис подстановки команд предпочтительнее старого `синтаксиса из-за более простого и менее подверженного ошибкам вложения и экранирования синтаксиса.
Кроме того, кажется, что большинство /bin/shоболочек в современном стиле поддерживают $(…):
- удар
- Ash (и, следовательно, BusyBox, поэтому большинство встроенных Linux)
- тире
- FreeBSD / bin / sh
И $(…)определено IEEE 1003.1.
Итак, у меня есть 2 очень связанных вопроса:
- Есть ли какая-либо причина использовать `в новой разработке сценариев оболочки, если вы не знаете конкретную старую систему, на которой сценарий должен будет выполняться?
- Есть ли какая-либо причина не учить студентов по программированию на UNIX просто писать
$(...), а обсуждать`только как устаревший вариант, с которым они, вероятно, столкнутся, если будут читать сценарии оболочки других разработчиков (и может понадобиться, если они работают с действительно старой или нестандартной системой)? по какой-то причине)?
$()- сдвиг + 4,9, сдвиг + 0 - 5 нажатий клавиш;
`...`. Он существует для обратной переносимости только с оболочкой Борна (как и в случае с оболочкой Борна^(так же, как|) для обратной переносимости с оболочкой Томсона). Обратите внимание, что(t)cshу них нет$(...)(но нет особого смысла использовать или учить их).