problem mit rückgabewert

M

maximAL

Grünschnabel
hallo,
es geht darum ein bash-skript zu schreiben, dass durch die verzeichnisstruktur geht und in jedem verzeichnes die größe der enthaltenen dateien addiert und ausgibt.
das ganze soll rekursiv sein, mit parameter-rückgabe über echo. und da gibts wohl irgendein problem, jedenfalls vertragen sich wohl zwei werte bei der addition nicht.
Code:
dir=~/htw/bs/beleg2

cd $1

if [ $# -lt 2 ]
then
    size=0
else
    size=$2
fi

for obj in `ls -A`
do
    if [ ! -d $obj ] 
    then
filesize=`ls -s $obj | awk '{print $1}'`
echo $filesize
size=$(( $size+$filesize ))
    elif [ -d $obj ] 
    then
dirsize=`$dir/space $obj $size`
echo $dirsize
size=$(( $size+$dirsize )) #HIER DAS PROBLEM
    fi 
done

echo  $size
ich hab jetzt schon alles möglich rumprobiert, aber ich komm einfach nicht drauf wie ich den rückgabewert zur variable addieren kann :hilfe2:
 
und wie schaut das problem aus? gibt's einen error oder kommt das falsche ergebnis raus?
maximAL schrieb:
Code:
    elif [ -d $obj ] 
    then
dirsize=`$dir/space $obj $size`
echo $dirsize
size=$(( $size+$dirsize )) #HIER DAS PROBLEM
    fi 
done

echo  $size
was macht denn die zeile dirsize=`$dir/space $obj $size` ?
 
Abgesehen davon, warum ermittelst Du die größe nicht über 'du' ?

Beispiele:
Code:
du -k            # Angabe in kB
du -M           # Angabe in MB
du -h            # Angabe human readable, also GB, MB, oder kB
du -k --max-depth=1   # Größe des akt. Verz. in kB inkl. aller Dateien und Verzeichnisse die Unterhalb liegen
 
Phorus schrieb:
Weils wahrscheinlich eine Hausaufgabe der HTW ist ;)
genau das und "du" ist halt nicht erlaubt ;)

so sieht der fehler aus:
Code:
 ./space: line 23: 8+4
12 : syntax error in expression (error token is "12 ")
ninguno schrieb:
was macht denn die zeile dirsize=`$dir/space $obj $size` ?
dass soll rekursiv das skript (welches space heisst, hätte ich noch anmerken müssen) wieder aufrufen. dir ist der pfad zum skript, obj das aktuelle objekt aus dem verzeichnes (hier: ein unterverzeichnis) und size die bis dahin ermittelte größe). das ganze sollte über echo die ermittelte size zurückgeben.

irgendwie hängts daran, dass sich size und dirsize nicht addieren lassen wollen. ich nehme an, dass der rückgabewert das falsche format hat :think:


EDIT: ok, problem beseitigt. die diversen echos (zum debuggen) waren ne reichlich dumme idee
 
Zuletzt bearbeitet:

Ähnliche Themen

Queue für copy Script

Problem mit HSPA+ Modem Huawei E353 - Installation unmöglich?

Shellskript - Fehler in Cron

Escaping-Problem

[Suche] - Hilfe bei der Überarbeitung eines bash-Scripts

Zurück
Oben