Existe-t-il une différence entre l'utilisation de typeset dans ksh pour simplement définir une variable?
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.
-
typeset TARGET = "$ {XMS_HOME} / common / jxb / config / $ {RUNGROUP}. $ {ENV} .properties" (
-
TARGET = "$ {XMS_HOME} / commun / jxb / config / $ {RUNGROUP}. $ {ENV} .properties"
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.