Existe-t-il une différence entre l'utilisation de typeset dans ksh pour simplement définir une variable?

StackOverflow https://stackoverflow.com/questions/1027869

  •  06-07-2019
  •  | 
  •  

Question

Les 2 lignes suivantes sont-elles complètement équivalentes? Si non, quelle est la différence? J'ai vu beaucoup de scripts shell utiliser le numéro 1 et je me demandais simplement ce que cela vous donne comparé au numéro 2.

  1. typeset TARGET = "$ {XMS_HOME} / common / jxb / config / $ {RUNGROUP}. $ {ENV} .properties" (
  2. TARGET = "$ {XMS_HOME} / commun / jxb / config / $ {RUNGROUP}. $ {ENV} .properties"
Était-ce utile?

La solution

typeset créera une variable locale (une variable qui ne "fuit pas"). Ceci est utile dans les fonctions mais je l’ai aussi vu être utilisé au plus haut niveau d’un script shell.

a=0
function x {
    typeset a=1
}
x
echo $a
function y {
    a=2
}
y
echo $a

imprimera

0
2

Vous pouvez également utiliser typeset pour créer des tableaux et des entiers.

[EDIT] Ajout du mot clé function car certains shells l'exigent. Supprimez-le s'il porte atteinte à votre shell, mais il devrait fonctionner avec la plupart des versions.

Autres conseils

Etant donné que les scripts shell sont un langage faiblement typé (dans lequel les variables n'auront pas de type de données), nous pouvons utiliser typeset pour définir une variable particulière afin qu'elle ne prenne que des types de données similaires.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top