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
.typeset
este considerat învechit?