Подстановка команд $ (foo) - это башизм? - PullRequest
11 голосов
/ 24 сентября 2010

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

FOO=$(echo bar)

и

FOO=`echo bar`

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

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

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

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

bashisms, то есть особенности, не определенные POSIX (не работает в тире, или вообще /bin/sh).

Ответы [ 2 ]

12 голосов
/ 24 сентября 2010

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

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

$(command)

или (версия «с кавычками»):

`command`

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


Ресурсы:

11 голосов
/ 24 сентября 2010

На самом деле синтаксис подстановки команд $( ... ) определяется POSIX, хотя он не является частью более раннего SVID sh стандарта.Поэтому до тех пор, пока вы не заботитесь о работе в системах, предшествующих POSIX, все должно быть в порядке.

...