Mitä eroa julistaa ja typet

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

  • voitko anna esimerkki siitä, missä ja miksi tämä käyttö bash-skripteissä
  • … kuten sanoin, ne ovat täsmälleen samat. En ymmärrä miten minä ' voi erottaa ne, jos he ovat.
  • Hyvä. Huomaa, että " vanhentunut " näkyy vain help typeset, ei man typeset.
  • @ChrisDown, et halua ' Sattuu tietämään, miksi tarkalleen typeset pidetään vanhentuneena?

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 ja declare?
  • 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

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *