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
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
ésdeclare
? - 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.
help typeset
, nem aman typeset
fájlban.typeset
tekinthető elavultnak?