Dans le script bash:
nous créons une variable en la nommant simplement:
abc=ok
ou on peut utiliser declare
declare abc=ok
quelle est la différence?
et pourquoi bash propose-t-il tant de façons de créer une variable?
bash
shell-script
variable
source d'amour
la source
la source
declare
les noms sont locaux, comme avec lalocal
commande. L'-g
option supprime ce comportement. Voirhelp declare
.declare
permet de créer des tableaux associatifs, des entiers et des variables en lecture seule. En outre, il développe ses arguments, de sorte que des choses commedeclare $name=1
sont possibles.Réponses:
De
help -m declare
:Donc,
declare
est utilisé pour définir des valeurs de variables et des attributs .Me laisser montrer l'utilisation de deux attributs avec un exemple très simple:
D'après l'exemple ci-dessus, vous devriez comprendre l'utilisation de
declare
variable par rapport à la variable normale! Ce type dedeclare
fonctionnalité est utile dans les fonctions, les boucles avec script.Visitez aussi Typing variables: declare or typet
la source
abc=ok
assigne une valeur à la variableabc
.declare abc
déclare une variable appeléeabc
. Les deux peuvent être combinés commedeclare abc=ok
.En bash, comme dans d’autres shell, les variables string et array n’ont pas besoin d’être déclarées, elles
declare
ne sont donc pas nécessaires à moins que vous ne souhaitiez passer des options, par exempledeclare -A abc
pour créerabc
un tableau associatif oudeclare -r
pour créer une variable en lecture seule. Cependant, à l'intérieur d'une fonction,declare
cela fait une différence: cela fait que la variable est locale à la fonction, ce qui signifie que la valeur de la variable en dehors de la fonction (le cas échéant) est conservée. (Sauf utilisationdeclare -g
, ce qui rend la variable non locale; ceci est utile lorsqu'il est combiné à d'autres options, par exempledeclare -gA
pour créer un tableau associatif global dans une fonction.) Exemple:Sortie:
Une autre chose que vous pouvez faire avec la fonction
declare
intégrée estLe
declare
construit est unique à bash. Il est fortement inspiré et très proche de celui de kshtypeset
, et bashtypeset
est synonyme dedeclare
compatibilité. (Je ne sais pas pourquoi bash ne l’a pas appelétypeset
). Il y a un troisième synonymelocal
. Il y a aussiexport
, ce qui revient au mêmedeclare -x
principe que pour la compatibilité (avec chaque shell de style Bourne).la source
export
,local
etdeclare
est le plus compatible avec d' autres coquilles?export
existe dans toutes les variantes desh
.local
n'existe que dans bash et zsh,declare
seulement dans bash.typeset
existe dans ksh, bash et zsh.