Quelquun peut-il expliquer la différence entre declare et typer avec des exemples réels?
Réponse
Dans bash
, typeset
et declare
sont exactement les mêmes. La seule différence est que typeset
est considéré 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 dans le même souffle:
declare [-aAfFgilrtux] [-p] [name[=value] ...] typeset [-aAfFgilrtux] [-p] [name[=value] ...] Declare variables and/or give them attributes.
typeset
est portable vers dautres shells, par exemple, ksh93
. Si vous visez la portabilité inter-shell, utilisez typeset
(et assurez-vous que la façon dont vous lappelez est portable). Si vous ne vous souciez pas de cette portabilité, utilisez declare
.
Commentaires
Réponse
Je connais un cas où declare
est utile pour éviter le mal eval
: indirection variable :
$ var=foo $ x=var $ declare "$x=another_value" $ echo $var another_value
Commentaires
- Ceci est un commentaire sympa mais comment cela répond-il à la question qui est un B out
typeset
etdeclare
? - Cest déjà bien répondu par Chris Down, ma réponse est juste un cas où il ' est utile
- Peut-être que ' t clair. Les commentaires doivent être des commentaires et les réponses doivent être des réponses. Ceci est un commentaire, pas une réponse.
- Mon extrait ne serait pas ' clair dans un commentaire
- mais vous pouvez toujours attribuer des variables avec typeset … remplacez simplement declare par typeset et vous obtenez toujours le même résultat.
help typeset
, pas dansman typeset
.typeset
est considéré comme obsolète?