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, typesetund declaresind genau die gleichen. Der einzige Unterschied ist, dass dies typesetals 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.
typesetist 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.
typesetals veraltet gilt?
Ich kenne einen Fall, in dem declarees nützlich ist, das Böse zu vermeiden eval: variable Indirektion :
$ var=foo
$ x=var
$ declare "$x=another_value"
$ echo $var
another_value
typesetund declare?