¿Hay alguna diferencia entre usar typeset en ksh para simplemente establecer una variable?
Pregunta
¿Son las siguientes 2 líneas completamente equivalentes? Si no, ¿cuál es la diferencia? He visto muchos scripts de shell que utilizan el número 1 y me preguntaba qué te ofrece en comparación con el número 2.
-
typeset TARGET = " $ {XMS_HOME} / common / jxb / config / $ {RUNGROUP}. $ {ENV} .properties "
TARGET="${XMS_HOME}/common/jxb/config/${RUNGROUP}.${ENV}.properties"
Solución
typeset
creará una variable local (una que no '' pierde ''). Esto es útil en funciones, pero también he visto que se usa en el nivel superior de un script de shell.
a=0
function x {
typeset a=1
}
x
echo $a
function y {
a=2
}
y
echo $a
imprimirá
0
2
También puede usar typeset
para crear matrices y enteros.
[EDIT] Se agregó la palabra clave function
porque algunos shells lo requieren. Elimínelo si ofende a su shell, pero debería funcionar con la mayoría de las versiones.
Otros consejos
dado que las secuencias de comandos de shell son un lenguaje de tipo suelto (en el que las variables no tienen un tipo de daty) podemos usar typeset para establecer una variable particular para tomar solo un tipo de datos similar de valores.