Mi a különbség a deklarálás és a betűkészlet között

Meg tudja valaki magyarázni a deklarálás és a betűkészlet közötti különbségeket a valós példákkal.

Válasz

In bash, typeset és declare pontosan ugyanazok. Az egyetlen különbség az, hogy a typeset elavultnak tekinthető.

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

A man oldal még ugyanazon leheleten sorolja fel őket:

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

typeset néhány más héjba hordozható, például ksh93. Ha a héjokon átívelő hordozhatóságra törekszik, használja a typeset parancsot (és ellenőrizze, hogy hordozható-e). Ha nem érdekli az ilyen hordozhatóság, használja a következőt: declare.

Megjegyzések

  • adjon néhány példát arra, hogy a bash szkriptben hol és miért használja ezt a felhasználást
  • … mint mondtam, pontosan megegyeznek. Nem értem, hogy én ' meg tudja különböztetni őket, ha ilyenek vannak.
  • Jó. Vegye figyelembe, hogy az " elavult " csak a help typeset, nem a man typeset fájlban.
  • @ChrisDown, nem szeretne ' véletlenül nem tudják, miért éppen typeset tekinthető elavultnak?

Válasz

Ismerek olyan esetet, amikor a declare hasznos a gonosz eval: változó indirekció elkerülésére. :

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

Hozzászólások

  • Ez egy jó megjegyzés, de hogyan válaszolja meg ez a kérdés ab ki typeset és declare?
  • Erre már Chris Down is jól válaszolt, válaszom csak egy eset, amikor ez ' hasznos
  • Talán nem voltam tisztázva A megjegyzéseknek megjegyzésnek, a válaszoknak pedig válaszoknak kell lenniük. Ez egy megjegyzés, nem válasz.
  • A kódrészletem nem törölhető ' egy megjegyzésből
  • de változókat továbbra is hozzárendelhet typet … csak cserélje ki a deklarálást a typeet-re, és továbbra is ugyanazt az eredményt kapja.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük