2011-12-18 3 views

ответ

9

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

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

Update:

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

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

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

+0

@samus: $() действительно POSIX (1003,2, я думаю), но он не будет работать на старых UNIX. Поверьте мне - я использую их каждый день. –

+0

, но это тот момент, когда мы говорим о переносимости, мы имеем в виду POSIX, потому что это текущий стандарт, поддерживаемый большинством платформ, если у вас есть особые требования, выходящие за рамки этого, то это частный случай. –

+0

@samus: «Более переносимым» я имею в виду «работает над большим количеством ОС», а не «совместим с новым стандартом POSIX». –

3

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

[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 
+0

Таким образом, оператор считывает новое значение переменной и выводит старое значение. :) –

+2

Обычно используется, когда вы передаете значения вашему сценарию как '$ 1',' $ 2' и помогает запустить ваш скрипт, даже если эти значения явно не переданы. При этом вы можете неявно устанавливать переменные для запуска по значениям по умолчанию, если для них не было присвоено значение. Это экономит около 4-5 строк кода, где вы проверяете, была ли назначена переменная или нет, что-то вроде 'if [-z" $ var "]; ... ' –

+0

Я считаю, мы можем либо использовать, echo $ {a: =" Значение по умолчанию "} или echo $ {a: -" Значение по умолчанию "} – Indrajeet

Смежные вопросы