Qual é a diferença entre declare e typeset?

15

Alguém pode explicar a diferença entre declarar e compor com exemplos da vida real?

    
por Rahul Patil 25.02.2013 / 08:02

2 respostas

21

Em bash , typeset e declare são exatamente iguais. A única diferença é que typeset é considerado obsoleto.

typeset: typeset [-aAfFgilrtux] [-p] name[=value] ...
    Set variable values and attributes.

    Obsolete.  See 'help declare'.

A página man ainda os lista na mesma respiração:

declare [-aAfFgilrtux] [-p] [name[=value] ...]
typeset [-aAfFgilrtux] [-p] [name[=value] ...]
    Declare variables and/or give them attributes.

typeset é portável para alguns outros shells, por exemplo, ksh93 . Se você estiver pensando em portabilidade entre os shell, use typeset (e certifique-se de que a maneira como você está chamando seja portátil). Se você não se importa com essa portabilidade, use declare .

    
por 25.02.2013 / 08:09
3

Conheço um caso em que declare é útil para evitar o mal eval : variável indirecção :

$ var=foo
$ x=var
$ declare "$x=another_value"
$ echo $var
another_value
    
por 25.02.2013 / 16:48