Различные способы инициализации переменной - PullRequest
9 голосов
/ 19 декабря 2011

Насколько я видел, есть два способа инициализации переменной с выводом процесса. Есть ли разница между этими двумя?

ex1=`echo 'hello world'`
ex2=$(echo 'hello world')

Ответы [ 3 ]

10 голосов
/ 19 декабря 2011

Вы получаете тот же эффект.

Рекомендуется $(), так как он более читабелен и облегчает вложение одного $() в другой $().

Обновление:

Синтаксис $() является стандартом POSIX 1003.1 (издание 2004 г.). Однако в некоторых старых системах UNIX (SunOS, HP-UX и т. Д.) /bin/sh этого не понимает.

Возможно, вам придется использовать backtick "` "или использовать другую оболочку (обычно это ksh), если вам нужен ваш скрипт для работы в такой среде.

Если вы не знаете, какой синтаксис использовать - используйте $(). Синтаксис Backtick устарел.

4 голосов
/ 19 декабря 2011

см. http://mywiki.wooledge.org/BashFAQ/082

также обратите внимание, что $() - это POSIX, поэтому он работает на sh.

3 голосов
/ 19 декабря 2011

Существует другой способ инициализации переменной значением по умолчанию, если вы сами не инициализировали ее.

[jaypal:~/Temp] a="I have initialized var a"
[jaypal:~/Temp] echo ${a:="Default value"}
I have initialized var a
[jaypal:~/Temp] a=
[jaypal:~/Temp] echo ${a:="Default value"}
Default value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...