Может ли кто-нибудь объяснить разницу между объявлениями и наборами на реальных примерах.
Может ли кто-нибудь объяснить разницу между объявлениями и наборами на реальных примерах.
Ответы:
В bash
, typeset
и declare
точно так же. Разница лишь в том, что typeset
считается устаревшим.
typeset: typeset [-aAfFgilrtux] [-p] name[=value] ...
Set variable values and attributes.
Obsolete. See `help declare'.
Страница man даже перечисляет их на одном дыхании:
declare [-aAfFgilrtux] [-p] [name[=value] ...]
typeset [-aAfFgilrtux] [-p] [name[=value] ...]
Declare variables and/or give them attributes.
typeset
переносим на некоторые другие оболочки, например ksh93
. Если вы стремитесь к переносимости между оболочками, используйте typeset
(и убедитесь, что способ, которым вы звоните, является переносимым). Если вас не волнует такая мобильность, используйте declare
.
help typeset
, а не в man typeset
.
typeset
считается устаревшим?
Я знаю случай, когда declare
полезно избежать зла eval
: переменная косвенность :
$ var=foo
$ x=var
$ declare "$x=another_value"
$ echo $var
another_value
typeset
и declare
?