Lors de la frappe des variables dans Bash, quelle est la différence entre declare
et typeset
? Lorsqu'il est utilisé à l'intérieur d'une fonction: quelle est la différence entre declare
et typeset
et local
?
La seule différence que j'ai rencontrée est que la composition est portable aux scripts ksh. Autre que cela, y a-t-il des raisons pour lesquelles on devrait être préféré sur l'autre?
Mise à jour: Ajout de local
à la question.
typeset
et declare
:Le premier est plus portable (par exemple ksh), tandis que ce dernier est plus préférable lorsque la portabilité n'est pas une préoccupation.
declare
(ou typeset
) et local
lorsqu'il est utilisé à l'intérieur d'une fonction:Le premier implique ce dernier, mais plus puissant. Par exemple, declare -i x
fait x
avoir l'attribut integer
, declare -r x
fait x
readonly, etc.
En ce qui concerne Bash, non, il n'y a pas de différence. En fait, le Manpage les a partager la même définition
déclarer [-aaffilrtux] [-p] [nom [= valeur] ...]
Typeset [-aaffilrtux] [-p] [nom [= valeur] ...]
[.____] Déclarez des variables et/ou de leur donner des attributs. Si aucun nom n'est donné, affichez les valeurs des variables. L'option -p affichera les attributs et les valeurs de chaque nom ...
J'ai aussi trouvé cette petite Titre qui justifie encore ma réclamation ainsi que la portabilité ksh
que vous avez mentionnée.
Les comestiens de déclaration ou de composition, qui sont les synonymes exacts, permettez de modifier les propriétés des variables. C'est une forme très faible de la dactylographie [1] disponible dans certaines langages de programmation. La commande DECLARE est spécifique à la version 2 ou ultérieure de Bash. La commande typeet fonctionne également dans les scripts ksh.
Dans le manuel Bash en vertu de la section 4.2 Bash Bashetin Commands Il indique:
'composer'
Typeset [-affrxi] [-p] [nom [= valeur] ...]
[.____] La commande 'Typeet' est fournie pour la compatibilité avec la coquille Korn; Cependant, il a été obsolète en faveur de la commande "Déclarez".