Czy ktoś może wyjaśnić różnicę między deklarowaniem a składem za pomocą przykładów z prawdziwego życia.
Czy ktoś może wyjaśnić różnicę między deklarowaniem a składem za pomocą przykładów z prawdziwego życia.
Odpowiedzi:
W bash
, typeset
i declare
są dokładnie takie same. Jedyna różnica polega na tym, że typeset
uważa się ją za przestarzałą.
typeset: typeset [-aAfFgilrtux] [-p] name[=value] ...
Set variable values and attributes.
Obsolete. See `help declare'.
Strona podręcznika wyświetla je nawet w tym samym oddechu:
declare [-aAfFgilrtux] [-p] [name[=value] ...]
typeset [-aAfFgilrtux] [-p] [name[=value] ...]
Declare variables and/or give them attributes.
typeset
jest przenośny dla niektórych innych powłok, na przykład ksh93
. Jeśli dążysz do przenośności między powłokami, użyj typeset
(i upewnij się, że sposób, w jaki go wywołujesz, jest przenośny). Jeśli nie zależy Ci na takiej przenośności, użyj declare
.
help typeset
, a nie w man typeset
.
typeset
jest uważany za przestarzały?
Znam przypadek, w którym declare
przydatne jest uniknięcie zła eval
: pośrednia zmienność :
$ var=foo
$ x=var
$ declare "$x=another_value"
$ echo $var
another_value
typeset
i declare
?