Existe alguma diferença entre usar typeset em ksh simplesmente definindo uma variável?

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

  •  06-07-2019
  •  | 
  •  

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.

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

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top