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
typesetochdeclare? - 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.typesetanses vara föråldrad?