Является ли командная замена $(foo) bashism?

Существует два разных синтаксиса для подстановки команд,

FOO=$(echo bar)

и

FOO=`echo bar`

Насколько мне известно, первый метод определен в Bash, а второй - в sh.

Рассмотрим следующее использование подстановки команд в sh script.

#!/bin/sh
FOO=$(echo bar)

Это подпадает под определение bashism?

т.е. функции, не определенные POSIX (не работает в тире или вообще /Бен/ш).

Ответ 1

Это то же самое. Так что нет, это не багизм и не относится только к bash.

Замена команды
Подстановка команды позволяет заменять вывод команды вместо имени команды. Замена команды происходит, когда команда заключена в следующем порядке:

$(command)

или ('' backquoted ''):

`command`

Оболочка расширяет подстановку команд, выполняя команду в среде подсетей и заменяя подстановку команд стандартным выходом команды, удаляя последовательности одной или нескольких строк новой строки в конце подстановки. (Встроенные строки новой строки до конца вывода не удаляются, однако при разделении поля они могут быть переведены в пробелы, в зависимости от значения IFS и цитирования, которое действует.)


Ресурсы:

Ответ 2

Собственно, синтаксис подстановки $(... ) определяется POSIX, хотя он не является частью ранее SVID sh стандарт. Так что пока вы не заботитесь о запуске на системах pre-POSIX, все должно быть хорошо.