shell:strings in integer umwandeln bzw. strings 'non ASCII' vergleichen

starbuxx

starbuxx

Aktives Mitglied
Thread Starter
Dabei seit
13.04.2003
Beiträge
1.454
Reaktionspunkte
8
gruess' euch,

folgendes:
ich will in einem bashskript vergleichen ob der platz in einem zielverzeichniss ausreicht, um alle dateien aus einem anderen verzeichniss dahin zu verschieben.

die groessen bekomm ich bis jetzt mit:


# groesse aller dateien im verzeichniss checken
function check_size ()
{
SIZE_TOTAL=0

for SIZE in $(ls -lR $1 | grep -e 'total' | awk '{ print $2 }')
do
let SIZE_TOTAL=$SIZE_TOTAL+$SIZE
done

echo $SIZE_TOTAL
}

bzw.

# freien speicherplatz checken
function check_space ()
{
echo $(df -k $1 | grep -v -e 'Filesystem' | awk '{ print $4 }')
}

funktioniert soweit auch. allerdings sind es soweit strings, die ich ja schlecht mit

if [ "$STR1" < "$STR2" ]

oder

if [ $STR1 -lt $STR2 ]

testen kann, weil im ersten test nach ASCII reihenfolge getestet wird ("505" waere 'groesser' als "1024") bzw '-lt' nicht funktioniert, weil es keine Integer sind.

hat irgendjemand von euch eine idee, wie ich die sinnvoll vergleichen koennte, oder die Strings in Integer umwandeln kann?

grüsse,
sbx
 
Bin zwar kein Profi, aber das müsste an sich auch ohne Konvertieren der Variablen gehen. So hätte ich das Skript verfasst:

FOLDER=$(du -s $1 | awk '{print $1}')
HDD=$(df $2 | grep -v -e 'Filesystem' | awk '{print $4}')


if [ $FOLDER -lt $HDD ]
then
echo "Past"
else
echo "Past nicht"
fi

Aufgerufen wird es halt mir bla.sh <Ordner> <hdd>.
Das Skript hat so bei mir Funktioniert (kurz getestet). Hoffe das hilft dir weiter.
 
gruess dich,

dank dir schonmal für deine antwort.

ich muss noch irgendwo etwas verbastelt haben, weshalb -lt nicht funktioniert hat. :(

das problem mit 'du' besteht im übrigen darin, dass sich die ausgabe schlecht 'grep'pen laesst, im gegensatz zu 'ls -R'. aber das wahrscheinlich deshalb, weil ich auch kein profi bin ;)

ach ja: greppen weil 'du' für jedes unterverzeichniss die jeweilige groesse angibt, und ich will ja nur das 'total' am ende.

naja, ich mach mich mal ans fehlersuchen, und werd' berichten, wenn's klappt.

liebe gruesse,
sbx

[edit: vielleicht haett ich doch frueher ins bett gehen sollen. es lag nur an einem syntaxfehler in einer variablen. da die (falsch geschrieben) natuerlich nicht initialisiert war, konnte es auch nicht klappen. danke für die hilfe! sbx :edit]
 
Zuletzt bearbeitet:
Zurück
Oben Unten