Kan iemand het verschil tussen declareren en gezet verklaren met voorbeelden uit het echte leven.
Antwoord
In bash, typeset en declare zijn precies hetzelfde. Het enige verschil is dat typeset als verouderd wordt beschouwd.
typeset: typeset [-aAfFgilrtux] [-p] name[=value] ... Set variable values and attributes. Obsolete. See `help declare".
De man-pagina vermeldt ze zelfs in één adem:
declare [-aAfFgilrtux] [-p] [name[=value] ...] typeset [-aAfFgilrtux] [-p] [name[=value] ...] Declare variables and/or give them attributes.
typeset is draagbaar naar sommige andere shells, bijvoorbeeld ksh93. Als je naar cross-shell portabiliteit streeft, gebruik dan typeset (en zorg ervoor dat de manier waarop je het noemt draagbaar is). Als dergelijke overdraagbaarheid u niets kan schelen, gebruik dan declare.
Reacties
Antwoord
Ik ken een geval waarin declare nuttig is om de kwaadaardige eval: variabele indirecte te vermijden :
$ var=foo $ x=var $ declare "$x=another_value" $ echo $var another_value
Opmerkingen
- Dit is een leuke opmerking, maar hoe beantwoordt dat de vraag die is ab out
typesetendeclare? - Dit is al goed beantwoord door Chris Down, mijn antwoord is slechts een geval waarin het ' s nuttig
- Misschien was ik ' niet duidelijk. Opmerkingen moeten opmerkingen zijn en antwoorden moeten antwoorden zijn. Dit is een opmerking, geen antwoord.
- Mijn fragment zou niet ' niet worden gewist in een opmerking
- maar je kunt nog steeds variabelen toewijzen aan typeset … vervang gewoon declareren door typeset en je krijgt nog steeds hetzelfde resultaat.
help typeset, niet inman typeset.typesetals verouderd wordt beschouwd?