Є два різних значення "застарілий".
бути застарілим: (головним чином, функція програмного забезпечення) може бути придатною для використання, але вважатись застарілою та найкраще уникати її, як правило, через її заміщення.
—Новий Оксфордський американський словник
За цим визначенням зворотних лапок є застарілими.
Нездатний статус також може означати, що функція буде видалена в майбутньому.
- Вікіпедія
За цим визначенням backticks не застаріли.
Все ще підтримується:
Посилаючись на специфікацію відкритої групи щодо мов командної оболонки , зокрема розділу "2.6.3 Заміна команд", можна помітити, що обидві форми підстановки команд, backticks ( `..cmd..`
) або доларові парени ( $(..cmd..)
) все ще підтримуються настільки, наскільки йде специфікація.
витяг
Підстановка команд дозволяє замінити результат команди замість самої назви команди. Заміна команди відбувається, коли команда додається наступним чином:
$(command)
or (backquoted version):
`command`
Оболонка повинна розширювати підстановку команд, виконуючи команду в середовищі нижньої оболонки (див. Середовище виконання оболонки) та замінюючи заміну команди (текст команди плюс $()
додаючі або зворотні котирування) на стандартний висновок команди, видаляючи послідовності однієї або декількох <newline> символів в кінці підстановки. Вбудовані <newline> символи до кінця виводу не видаляються; однак вони можуть розглядатися як роздільники поля та усуватися під час розбиття поля, залежно від значення IFS та цитування, що діє. Якщо висновок містить будь-які нульові байти, поведінка не визначено.
У зворотному котируваному стилі підстановки команд < backslash > зберігає своє буквальне значення, за винятком випадків, коли слідує: '$', ' \`
' або <backckslash> . Пошук відповідного зворотного котирування повинен задовольнятися першим незапропонованим цитатам, що не залишилося цитатами; під час цього пошуку, якщо в коментарі оболонки зустрічається невиконаний зворотний цитат, відбувається тут документ, вбудована команда заміни $(command)
форми або рядка, що цитується, не визначені результати. Рядок з одноцитованим або подвійним цитуванням, який починається, але не закінчується, в " `...`
" послідовності створює невизначені результати.
З $(command)
формою всі символи, що слідують за відкритими дужками на відповідні дужки, що закриваються, складають команду. Будь-який дійсний скрипт оболонки може використовуватися для команди, за винятком сценарію, що складається виключно з повторних вказівок, які дають не визначені результати.
То чому тоді всі кажуть, що прихильність застаріла?
Оскільки в більшості випадків використання має використовуватися форма доларових парен замість задньої частини. (Зникла в першому сенсі вище.) Багато найповажніших сайтів (включаючи U&L) часто заявляють про це також у всьому світі, тому це слушна порада. Цю пораду не слід плутати з деяким неіснуючим планом вилучення підтримки штрихів із оболонок.
BashFAQ # 082 - Чому параметр $ (...) віддається перевазі над `...` (зворотній зв'язок)?
витяг
`...`
- це застарілий синтаксис, який вимагається лише найстарішими з не сумісних з POSIX оболонками бурж. Є кілька причин завжди віддавати перевагу $(...)
синтаксису:
...
Вікі Bash Hackers - застарілий і застарілий синтаксис
витяг
Це більш стара сумісна з Борном форма підстановки команд . І синтаксиси, `COMMANDS`
і $(COMMANDS)
синтаксиси визначені POSIX, але останній є дуже переважним, хоча перший, на жаль, все ще дуже поширений у сценаріях. Заміни команд нового стилю широко впроваджуються кожною сучасною оболонкою (а потім і деякою). Єдина причина використання задніх посилань - це сумісність із справжньою оболонкою Bourne (наприклад, Heirloom). Заміни команд Backtick вимагають спеціального втечі, коли вкладені, а приклади, знайдені в дикій природі, частіше за все неправильно цитуються. Дивіться:
Чому перевагу $ (...) переважає над `...` (зворотними посиланнями)? .
Стандартне обґрунтування POSIX
витяг
Через такі непослідовні поведінки, резервне котирування різноманітних підстановок команд не рекомендується для нових програм, які вкладають підстановки команд або намагаються вставити складні сценарії.
ПРИМІТКА. Цей третій уривок (вище) показує декілька ситуацій, коли задні посилання просто не працюватимуть, але працює новіший метод доларових парен, починаючи з наступного абзацу:
Крім того, синтаксис, що коментується, має історичні обмеження щодо вмісту вбудованої команди. Хоча новіша форма "$ ()" може обробляти будь-який вид допустимого вбудованого сценарію, форма, що коментується, не може обробляти деякі дійсні сценарії, що містять зворотні котирування.
Якщо ви продовжуєте читати цей розділ, відмови виділяються, показуючи, як вони не зможуть використовувати задні посилання, але працюйте, використовуючи нові позначення паренів долара.
Висновки
Тому бажано, щоб ви використовували доларові парени замість задніх планок, але ви насправді не використовуєте те, що технічно "застаріло", як у "це перестане працювати повністю в якийсь запланований момент".
Прочитавши все це, ви повинні мати рішення, яке вам настійно рекомендується використовувати доларові парени, якщо вам спеціально не потрібна сумісність із справжньою оригінальною оболонкою, яка не є POSIX Bourne.
cd
в каталог для прикладу того, чому$(...)
нотацію простіше використовувати, ніж вкладені зворотні лапки.