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 wennextglob
aktiviert ist )