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

Schreibe einen Kommentar