Kan någon förklara skillnaden mellan deklarera och typsätt med verkliga exempel.
Svara
I bash
, typeset
och declare
är exakt samma. Den enda skillnaden är att typeset
anses vara föråldrad.
typeset: typeset [-aAfFgilrtux] [-p] name[=value] ... Set variable values and attributes. Obsolete. See `help declare".
Man-sidan listar till och med dem i samma andetag:
declare [-aAfFgilrtux] [-p] [name[=value] ...] typeset [-aAfFgilrtux] [-p] [name[=value] ...] Declare variables and/or give them attributes.
typeset
är bärbar till vissa andra skal, till exempel ksh93
. Om du siktar på portabilitet över skal, använd typeset
(och se till att det sätt du kallar det är bärbart). Om du inte bryr dig om sådan portabilitet, använd declare
.
Kommentarer
Svar
Jag vet ett fall där declare
är användbart för att undvika det onda eval
: variabel riktning :
$ var=foo $ x=var $ declare "$x=another_value" $ echo $var another_value
Kommentarer
- Detta är en trevlig kommentar men hur svarar det på frågan som är ab ut
typeset
ochdeclare
? - Detta har redan besvarats av Chris Down, mitt svar är bara ett fall där det ' är användbart
- Jag kanske inte var ' t klart. Kommentarer ska vara kommentarer och svar ska vara svar. Det här är en kommentar, inte ett svar.
- Mitt kodavsnitt skulle ' inte rensas i en kommentar
- men du kan ändå tilldela variabler med typeset … ersätt bara deklarera med typeset och du får fortfarande samma resultat.
help typeset
, inte iman typeset
.typeset
anses vara föråldrad?