Warum sind "declare-f" und "declare-a" benötigt, die in bash-Skripten?
Sorry für so unschuldige Frage - ich versuche nur zu undertand...
Zum Beispiel - ich habe:
$ cat test.sh
#!/bin/bash
declare -f testfunct
testfunct () {
echo "I'm function"
}
testfunct
declare -a testarr
testarr=([1]=arr1 [2]=arr2 [3]=arr3)
echo ${testarr[@]}
Und wenn ich es laufen lasse bekomme ich:
$ ./test.sh
I'm function
arr1 arr2 arr3
So, hier ist eine Frage - für das, was ich muss (wenn...) einfügen declare
hier?
Mit ihm - oder ohne ihn, es funktioniert auf die gleiche...
Kann ich verstehen, zum Beispiel declare -i var
oder declare -r var
. Aber für was ist -f
(declare function) und -a
(declare array)?
Dank für die Tipps und links.
Die häufigste Verwendung von
declare
ist innerhalb von Funktionen, in denen es verhält sich wie local
wenn keine flags. Es kann auch notwendig sein, für einige Datentypen, dh. declare -A
für assoziative arrays. declare -g
ist oft eine nützliche Funktion, wenn Sie wollen, um es ganz explizit zu einem Leser, dass Sie absichtlich bezieht sich auf eine global innerhalb einer Funktion, anstatt einfach nur vergessen, es zu erklären und macht es global implizit.InformationsquelleAutor setevoy | 2013-11-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
declare -f functionname
wird verwendet, um die Ausgabe der definition der Funktionfunctionname
wenn es vorhanden ist, und absolut nicht zu erklären, dassfunctionname
ist/wird eine Funktion sein. Aussehen:Also in deinem Fall
declare -f testfunct
wird nichts tun, außer vielleicht, wenntestfunct
vorhanden ist, wird es ausgegeben wird seine definition auf stdout.InformationsquelleAutor gniourf_gniourf
Soweit ich weiß, die option-a allein hat keine praktische Relevanz, aber ich denke, es ist ein plus für die Lesbarkeit bei der Deklaration von arrays. Interessanter wird es, wenn Sie in Kombination mit anderen Optionen zum generieren von arrays um einen speziellen Typ.
Beispiel:
-l
und-u
sind nur bash 4+.InformationsquelleAutor eminor
declare -f
ermöglicht es Ihnen, um eine Liste aller definierten Funktionen (oder stammen) und Ihre Inhalte.Anwendungsbeispiel:
Jedoch so schlau, sagte gniourf_gniourf unten : es ist besser
declare -F
zum testen der Existenz einer Funktion.declare -F
.Ja, ich Stimme zu. Ich werde meinen Beitrag Bearbeiten 🙂
InformationsquelleAutor Idriss Neumann