GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Einzelne Klammer in der Bash-Variablenzuweisung?

Ich habe mich über einzelne Klammern in bash gewundert. Ich weiß, dass sie zum Ausführen von Befehlen in Subshells und zum Erstellen von Arrays verwendet werden, aber werden sie für irgendetwas anderes verwendet?

Eine Sache, die meine Aufmerksamkeit erregt hat, ist, dass wenn Sie die in-Variablenzuweisung verwenden, wie

var=(hello)
echo $var    # hello

bash erzeugt keinen Fehler oder ähnliches, und die Ausgabe ist die gleiche wie bei if

var=hello

Sind diese beiden Variablendefinitionen gleich oder gibt es einen Unterschied?

Akzeptierte Antwort:

In Ihrem Fall Klammer () werden beispielsweise als Array-Definition verwendet

a=(one two three)   # array definition
echo "${a}"         # print first element of array a
echo "${a[0]}"      # print first element of array a
echo "${a[1]}"      # print *second* element of array a
echo "${#a[@]}"     # print number of elements in array a

Wenn Sie eine einzelne Variable in ein Array einfügen, haben Sie nur ein Array mit einem einzelnen Element.

Um Ihre andere Frage zu beantworten, ob Klammern auch für etwas anderes verwendet werden:Es gibt viele Situationen in bash dass sie in Kombination mit anderen Zeichen verwendet werden können als:

  • Befehlsersetzung:$()
  • Prozesssubstitution:<() und >()
  • Subshell:(command)
  • Arithmetische Auswertung:(())
  • Funktionsdefinition:fun () { echo x; }
  • Musterliste im Glob:?() , *() , +() , @() , !() (nur wenn extglob aktiviert ist )

Linux
  1. Wie erstelle ich ein Array eindeutiger Elemente aus einer Zeichenfolge/einem Array in Bash?

  2. Klammer In Expr Arithmetik:3 * (2 + 1)?

  3. Array in Bash nicht gefunden

  4. Alias ​​mit Variable in Bash

  5. Konvertieren Sie eine Textzeichenfolge in Bash in ein Array

Bash-Exportvariable

Bash-Arrays

Assoziatives Array in Bash

So setzen Sie die Umgebungsvariable in Bash

bash:Listendateien in eine Variable einfügen, aber die Größe des Arrays ist 1

Exit-Code der Variablenzuweisung zur Befehlsersetzung in Bash