Vad är skillnaden mellan deklarera och typeset

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

  • kan du snälla ge några exempel på var och varför denna användning i bash-skript
  • … som jag sa, de är exakt samma. Jag förstår inte ' hur jag kan skilja dem om de är så.
  • Bra. Observera att " föråldrad " bara visas i help typeset, inte i man typeset.
  • @ChrisDown skulle du inte ' vet jag inte varför exakt typeset anses vara föråldrad?

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 och declare?
  • 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.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *