¿Hay alguna diferencia entre usar typeset en ksh para simplemente establecer una variable?

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

  •  06-07-2019
  •  | 
  •  

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.

  1. typeset TARGET = " $ {XMS_HOME} / common / jxb / config / $ {RUNGROUP}. $ {ENV} .properties "
  2. TARGET="${XMS_HOME}/common/jxb/config/${RUNGROUP}.${ENV}.properties"
¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top