S
sramko
Grünschnabel
Hallo Allerseits,
ich versuche gerade ein kleines Shell skript zu schreiben, welches bei einem gegebenen Verzeichnis alle darunter liegenden Dateien und Ordner durchläuft und ein paar Informationen ausspuckt. Allerdings gibt es zwei bedingungen:
Nach einigen Versuchen, WebSearch und ManPages lesen kam ich zu dem Ergebiss, dass "find" diese Aufgabe nicht bewältigen kann.
hier mein ansatz als bash-Script:
Der erste durchlauf klappt super. Aber die Iterration klappt nicht. Wie ihr seht, hab ich es mit "local" Variablen versucht, ohne genaues Wissen darüber, wie das in Bash funktioniert. In Java, Perl, Python, PHP,.... würde der Code ja prima funktionieren, aber unter Bash bekomme ich ihn nicht zum laufen.
Nun die Frage: kann mir jemand ein Beispiel für rekursieve Bash-Programmierung schicken oder mir zumidest zu verstehen geben, dass Rekursion in Bash nicht funktioniert?
Danke,
Lyrik
ich versuche gerade ein kleines Shell skript zu schreiben, welches bei einem gegebenen Verzeichnis alle darunter liegenden Dateien und Ordner durchläuft und ein paar Informationen ausspuckt. Allerdings gibt es zwei bedingungen:
- Es müssen zunächst die Dateien eines Ordners und erst danach die Unterordner behandelt werden
- Alles muss in alphabetischer Reihenfolge durchlaufen werden.
Nach einigen Versuchen, WebSearch und ManPages lesen kam ich zu dem Ergebiss, dass "find" diese Aufgabe nicht bewältigen kann.
hier mein ansatz als bash-Script:
Code:
iteration()
{
echo $1 $2;
local dr=$1;
local i=;
local j=;
local nr=$2;
for i in $(ls -1 -q "$dr") ; do
if test -f $i ; then
echo f\;$nr\;$i\;$dr/$i ;
fi
done;
for j in $(ls -1 -q "$dr") ; do
if test -d $j ; then
echo d\;$nr\;$j\;$dr/$j ;
iteration $dr/$j $[$nr+1]; #hier ist das Problem
fi
done;
}
Der erste durchlauf klappt super. Aber die Iterration klappt nicht. Wie ihr seht, hab ich es mit "local" Variablen versucht, ohne genaues Wissen darüber, wie das in Bash funktioniert. In Java, Perl, Python, PHP,.... würde der Code ja prima funktionieren, aber unter Bash bekomme ich ihn nicht zum laufen.
Nun die Frage: kann mir jemand ein Beispiel für rekursieve Bash-Programmierung schicken oder mir zumidest zu verstehen geben, dass Rekursion in Bash nicht funktioniert?
Danke,
Lyrik