Kann jemand den Unterschied zwischen Deklarieren und Setzen anhand von Beispielen aus der Praxis erklären?
Kann jemand den Unterschied zwischen Deklarieren und Setzen anhand von Beispielen aus der Praxis erklären?
Antworten:
In bash
, typeset
und declare
sind genau die gleichen. Der einzige Unterschied ist, dass dies typeset
als veraltet gilt.
typeset: typeset [-aAfFgilrtux] [-p] name[=value] ...
Set variable values and attributes.
Obsolete. See `help declare'.
Die Manpage listet sie sogar im selben Atemzug auf:
declare [-aAfFgilrtux] [-p] [name[=value] ...]
typeset [-aAfFgilrtux] [-p] [name[=value] ...]
Declare variables and/or give them attributes.
typeset
ist zum Beispiel auf einige andere Shells übertragbar ksh93
. Wenn Sie Cross-Shell-Portabilität anstreben, verwenden Sie typeset
(und stellen Sie sicher, dass die Art und Weise, wie Sie sie aufrufen, portabel ist). Wenn Sie sich nicht für eine solche Portabilität interessieren, verwenden Sie declare
.
help typeset
, nicht in man typeset
.
typeset
als veraltet gilt?
Ich kenne einen Fall, in dem declare
es nützlich ist, das Böse zu vermeiden eval
: variable Indirektion :
$ var=foo
$ x=var
$ declare "$x=another_value"
$ echo $var
another_value
typeset
und declare
?