Hvad er forskellen mellem erklære og typesæt

Kan nogen forklare forskellen mellem erklære og typesæt med virkelige eksempler.

Svar

I bash, typeset og declare er nøjagtigt de samme. Den eneste forskel er, at typeset betragtes som forældet.

 typeset: typeset [-aAfFgilrtux] [-p] name[=value] ... Set variable values and attributes. Obsolete. See `help declare".  

Man-siden viser dem endda i samme åndedrag:

 declare [-aAfFgilrtux] [-p] [name[=value] ...] typeset [-aAfFgilrtux] [-p] [name[=value] ...] Declare variables and/or give them attributes.  

typeset er bærbar til nogle andre skaller, for eksempel ksh93. Hvis du sigter mod bærbarhed på tværs af skal, skal du bruge typeset (og sørg for, at den måde, du kalder det på, er bærbar). Hvis du ikke bryr dig om en sådan bærbarhed, skal du bruge declare.

Kommentarer

  • kan du behage give et eksempel på, hvor og hvorfor denne brug i bash-script
  • … som jeg sagde, de er nøjagtig de samme. Jeg forstår ikke ' hvordan jeg kan differentiere dem, hvis de er det.
  • God en. Bemærk, at " forældet " bare vises i help typeset, ikke i man typeset.
  • @ChrisDown, ville du ikke ' t tilfældigvis vide, hvorfor nøjagtigt typeset betragtes som forældet?

Svar

Jeg kender et tilfælde, hvor declare er nyttigt for at undgå det onde eval: variabel indirektion :

$ var=foo $ x=var $ declare "$x=another_value" $ echo $var another_value 

Kommentarer

  • Dette er en god kommentar, men hvordan svarer det på det spørgsmål, der er ab ud typeset og declare?
  • Dette er allerede godt besvaret af Chris Down, mit svar er bare et tilfælde hvor det ' er nyttigt
  • Måske var jeg ikke ' t klart. Kommentarer skal være kommentarer, og svarene skal være svar. Dette er en kommentar, ikke et svar.
  • Mit uddrag ville ikke ' t klart i en kommentar
  • men du kan stadig tildele variabler med typeset … bare udskift erklær med typeset, og du får stadig det samme resultat.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *