Quelle est la différence entre declare et typer

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

  • pouvez-vous sil vous plaît donnez un exemple doù et pourquoi cette utilisation dans le script bash
  • … comme je lai dit, ils sont exactement les mêmes. Je ne ' pas comprendre comment je peut les différencier sils le sont.
  • Bonne réponse. Notez que " obsolète " apparaît simplement dans help typeset, pas dans man typeset.
  • @ChrisDown, vous ne ' Vous ne savez pas pourquoi, exactement, typeset est considéré comme obsolète?

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 et declare?
  • 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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *