Alguém pode explicar a diferença entre declarar e escrever com exemplos da vida real.
Resposta
Em bash
, typeset
e declare
são exatamente os mesmos. 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 do manual até 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átil para alguns outros shells, por exemplo, ksh93
. Se você deseja portabilidade cross-shell, use typeset
(e certifique-se de que a forma como você está chamando é portátil). Se você não se importa com essa portabilidade, use declare
.
Comentários
Resposta
Eu conheço um caso em que declare
é útil para evitar o mal eval
: indireção variável :
$ var=foo $ x=var $ declare "$x=another_value" $ echo $var another_value
Comentários
- Este é um bom comentário, mas como isso responde à pergunta que é ab out
typeset
edeclare
? - Isso já foi bem respondido por Chris Down, minha resposta é apenas um caso em que isso ' é útil
- Talvez eu não estivesse ' t claro. Os comentários devem ser comentários e as respostas devem ser respostas. Este é um comentário, não uma resposta.
- Meu snippet não ' não limpar em um comentário
- , mas você ainda pode atribuir variáveis com typeset … apenas substitua declare por typeset e você ainda obterá o mesmo resultado.
help typeset
, não emman typeset
.typeset
é considerado obsoleto?