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
typesetjadeclare? - 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.typesetpidetään vanhentuneena?