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
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
ogdeclare
? - 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.
help typeset
, ikke iman typeset
.typeset
betragtes som forældet?