Was ist der Unterschied zwischen Deklaration und Satz

Kann jemand den Unterschied zwischen Deklaration und Satz anhand von Beispielen aus dem wirklichen Leben erklären.

Antwort

In bash typeset und declare sind genau gleich. Der einzige Unterschied besteht darin, dass typeset als veraltet angesehen wird.

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

Die Manpage listet sie sogar in einem Atemzug auf:

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

typeset kann auf einige andere Shells portiert werden, z. B. ksh93. Wenn Sie eine Shell-übergreifende Portabilität anstreben, verwenden Sie typeset (und stellen Sie sicher, dass die Art und Weise, wie Sie es aufrufen, portabel ist). Wenn Sie sich nicht für eine solche Portabilität interessieren, verwenden Sie declare.

Kommentare

  • können Sie bitte Geben Sie ein Beispiel dafür, wo und warum diese Verwendung im Bash-Skript
  • … wie gesagt, sie sind genau gleich. Ich verstehe ' nicht, wie ich kann sie unterscheiden, wenn sie so sind.
  • Gut. Beachten Sie, dass " veraltet " nur in help typeset, nicht in man typeset.
  • @ChrisDown, Sie würden ' nicht Sie wissen nicht genau, warum typeset als veraltet gilt?

Antwort

Ich kenne einen Fall, in dem declare nützlich ist, um das Böse zu vermeiden. eval: variable Indirektion :

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

Kommentare

  • Dies ist ein schöner Kommentar, aber wie beantwortet das die Frage, die ist ab out typeset und declare?
  • Dies wird von Chris Down bereits gut beantwortet. Meine Antwort ist nur ein Fall, in dem es ' ist nützlich
  • Vielleicht war ich ' nicht klar. Kommentare sollten Kommentare sein, und Antworten sollten Antworten sein. Dies ist ein Kommentar, keine Antwort.
  • Mein Snippet würde ' in einem Kommentar nicht klar sein
  • , aber Sie können trotzdem Variablen zuweisen Schriftsatz … Ersetzen Sie einfach deklarieren durch Schriftsatz und Sie erhalten immer noch das gleiche Ergebnis.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.