Quelqu'un peut-il expliquer la différence entre déclarer et composer avec des exemples réels.
Quelqu'un peut-il expliquer la différence entre déclarer et composer avec des exemples réels.
Réponses:
Dans bash, typesetet declaresont exactement les mêmes. La seule différence est qu'elle typesetest considérée comme obsolète.
typeset: typeset [-aAfFgilrtux] [-p] name[=value] ...
Set variable values and attributes.
Obsolete. See `help declare'.
La page de manuel les répertorie même du même souffle:
declare [-aAfFgilrtux] [-p] [name[=value] ...]
typeset [-aAfFgilrtux] [-p] [name[=value] ...]
Declare variables and/or give them attributes.
typesetest portable pour certains autres shells, par exemple ksh93,. Si vous visez la portabilité cross-shell, utilisez typeset(et assurez-vous que la façon dont vous l'appelez est portable). Si vous ne vous souciez pas d'une telle portabilité, utilisez declare.
help typeset, pas dans man typeset.
typesetest considéré comme obsolète?
Je connais un cas où il declareest utile d'éviter le mal eval: indirection variable :
$ var=foo
$ x=var
$ declare "$x=another_value"
$ echo $var
another_value
typesetet declare?