Jaký je rozdíl mezi deklarovat a vysázet

Může někdo vysvětlit rozdíl mezi deklarovat a vysadit pomocí příkladů z reálného života.

Odpovědět

V bash, typeset a declare jsou úplně stejné. Jediný rozdíl je v tom, že typeset je považován za zastaralý.

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

Manuální stránka je dokonce uvádí stejným dechem:

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

typeset je přenosný na jiné skořápky, například ksh93. Pokud se snažíte o přenositelnost napříč prostředími, použijte typeset (a ujistěte se, že způsob, jakým jej voláte, je přenosný). Pokud se o takovou přenositelnost nestaráte, použijte declare.

Komentáře

  • můžete prosím uveďte nějaký příklad toho, kde a proč je toto použití v bash skriptu
  • … jak jsem řekl, jsou úplně stejné. Nerozumím tomu, jak

může je odlišit, pokud tomu tak je.

  • Dobrá. Všimněte si, že " zastaralé " se právě objeví v help typeset, ne v man typeset.
  • @ChrisDown, ' Nevíte náhodou, proč je typeset považován za zastaralý?
  • Odpovědět

    Znám případ, kdy je declare užitečné vyhnout se zlému eval: proměnné indirection :

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

    Komentáře

    • Toto je pěkný komentář, ale jak to odpovídá na otázku, která je ab out typeset a declare?
    • Na to již dobře odpověděl Chris Down, moje odpověď je pouze případ, kdy to ' je užitečné
    • Možná mi to ' nebylo jasné. Komentáře by měly být komentáři a odpovědi by měly být odpověďmi. Toto není komentář, ale odpověď.
    • Můj úryvek by v komentáři nevyjasnil '
    • , ale stále můžete přiřadit proměnné pomocí vysázet … stačí nahradit deklaraci vysázením a stále získáte stejný výsledek.

    Napsat komentář

    Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *