Existe alguma diferença entre usar typeset em ksh simplesmente definindo uma variável?
Pergunta
As seguintes 2 linhas completamente equivalente? Se não, qual é a diferença? Já vi muita scripts shell utilizar número 1 e só estava me perguntando o que lhe dá em comparação com o número 2.
-
typeset TARGET="${XMS_HOME}/common/jxb/config/${RUNGROUP}.${ENV}.properties"
-
TARGET="${XMS_HOME}/common/jxb/config/${RUNGROUP}.${ENV}.properties"
Solução
typeset
irá criar uma variável local (aquele que não "vazar"). Isso é útil em funções, mas eu vi também que está sendo usado no nível superior de um shell script.
a=0
function x {
typeset a=1
}
x
echo $a
function y {
a=2
}
y
echo $a
irá imprimir
0
2
Você também pode usar typeset
para criar matrizes e inteiros.
[EDIT] palavra-chave function
Adicionado porque algumas conchas exigem. Removê-lo se ele ofende a sua casca, mas ele deve funcionar com a maioria das versões.
Outras dicas
desde shell script é uma linguagem fracamente tipada (em que as variáveis ??não terá um datytype) podemos usar typeset para definir uma variável especial para ter tipo de dados semelhante de apenas valores.