Voiko kukaan selittää julistuksen ja ladonnan välisen eron tosielämän esimerkeillä.
Vastaa
Kohteissa bash
, typeset
ja declare
ovat täsmälleen samat. Ainoa ero on, että typeset
katsotaan vanhentuneeksi.
typeset: typeset [-aAfFgilrtux] [-p] name[=value] ... Set variable values and attributes. Obsolete. See `help declare".
Man -sivulla jopa luetellaan ne samalla hengityksellä:
declare [-aAfFgilrtux] [-p] [name[=value] ...] typeset [-aAfFgilrtux] [-p] [name[=value] ...] Declare variables and/or give them attributes.
typeset
on siirrettävissä joihinkin muihin kuoreihin, esimerkiksi ksh93
. Jos tavoitteena on cross-shell-siirrettävyys, käytä typeset
(ja varmista, että tapa, jolla soitat, on kannettava). Jos et välitä tällaisesta siirrettävyydestä, käytä declare
.
Kommentit
Vastaa
Tiedän tapauksen, jossa declare
on hyödyllinen välttämään pahaa eval
: muuttujan suuntaus :
$ var=foo $ x=var $ declare "$x=another_value" $ echo $var another_value
Kommentit
- Tämä on hieno kommentti, mutta miten se vastaa kysymykseen, joka on ab ulos
typeset
jadeclare
? - Chris Down on jo vastannut tähän hyvin, vastaukseni on vain tapaus, jossa se ' on hyödyllinen
- Ehkä minua ei ' ollut selvä. Kommenttien tulisi olla kommentteja ja vastausten tulisi olla vastauksia. Tämä on kommentti, ei vastaus.
- Pätkääni ei poisteta ' t kommentista
- mutta voit silti määrittää muuttujia typet … vain korvaa deklaroi typetillä ja saat silti saman tuloksen
help typeset
, eiman typeset
.typeset
pidetään vanhentuneena?