Care este diferența dintre declare și typeset

Poate cineva să explice diferența dintre declare și typeset cu exemple din viața reală.

Răspuns

În bash, typeset și declare sunt exact la fel. Singura diferență este că typeset este considerat învechit.

 typeset: typeset [-aAfFgilrtux] [-p] name[=value] ... Set variable values and attributes. Obsolete. See `help declare".  

Pagina manuală le listează chiar în același suflu:

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

typeset este portabil pentru alte shell-uri, de exemplu, ksh93. Dacă vizați portabilitatea cross-shell, utilizați typeset (și asigurați-vă că modul în care îl apelați este portabil). Dacă nu vă pasă de o astfel de portabilitate, utilizați declare.

Comentarii

  • puteți, vă rog oferiți un exemplu de unde și de ce această utilizare în scriptul bash
  • … așa cum am spus, sunt exact la fel. Nu ' nu înțeleg cum am le poate diferenția dacă sunt așa.
  • Bine. Rețineți că " învechit " apare doar în help typeset, nu în man typeset.
  • @ChrisDown, nu ați ' Nu știu de ce, exact, typeset este considerat învechit?

Răspuns

Știu un caz în care declare este util pentru a evita răul eval: indirectă variabilă :

$ var=foo $ x=var $ declare "$x=another_value" $ echo $var another_value 

Comentarii

  • Acesta este un comentariu frumos, dar cum răspunde asta la întrebarea care este ab typeset și declare?
  • Acest lucru este deja bine răspuns de Chris Down, răspunsul meu este doar un caz în care ' este util
  • Poate că nu am fost ' clar. Comentariile ar trebui să fie comentarii, iar răspunsurile ar trebui să fie răspunsuri. Acesta este un comentariu, nu un răspuns.
  • Fragmentul meu nu ar fi ' clarificat într-un comentariu
  • dar totuși puteți atribui variabile cu tipărit … doar înlocuiți declarați cu tipărit și veți obține în continuare același rezultat.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *