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
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șideclare? - 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.
help typeset, nu înman typeset.typeseteste considerat învechit?