Linux - shell a sčítání proměnných
Ahoj,
mohl by mi někdo poradit? Zdánlivá blbost, kterou bych v PHP nebo C++ měl za pár vteřin, ale jelikož se moc nevyznám v shellu Linuxu a jeho zákonitostech, tak se s tímto morduju už asi 4 hodiny.
Zkráceně - mám složku, ve které je např. 10 souborů. Zjistím si velikost každého souboru a součet těchto velikosti potřebuju načíst do jedné proměnné. Nejde mi to načítání - navyšování jedné proměnné v jednom skoku cyklu. Pořád mi to píše nějakou chybu. Zatím to mám takhle:
#!/bin/bash
cd /home/uzivatel/test
for f in $(ls *)
do
SIZE=`stat -c %s $f`
MAXSIZE=$(($MAXSIZE+$SIZE))
done
echo "$MAXSIZE"
Jde mi o tu proměnnou $MAXSIZE.
Díky moc všem
#!/bin/bash
MAXSIZE=0
SIZE=0
cd /home/uzivatel/test
for f in $(ls *); do
echo $f
SIZE=`stat -c %s $f`
let MAXSIZE=MAXSIZE+SIZE
done
echo "$MAXSIZE"
Pozri si aku hodnotu nadobuda "f". Nechal som ti tam echo. Pravdepodobne tam nemas ciselnu hodnotu. Ja vo svojom distre nemam prikaz "stat", takze neviem co to ma robit.
Ahoj,
dík za radu, ale nejde to. Moje distro zase nemá příkaz "let".
Teď je to takhle:
To vypíše
Pokud tam do vzorce zadám
Vypíše to
A tak dál, ale ne celkový součet.
Napadá někoho prosím jak to udělat?
tak to možná nepoužíváš bash:
http://www.gnu.org/software/bash/manual/bashref.ht ml#Shell-Arithmetic
Jo pravdu díš. Já to spouštěl příkazem sh test.sh, tak sem zkusil bash test.sh a už jde. Díky za nakopnutí, to je ta neznalost, o které jsem mluvil.
Díky moc všem, už to jede.
proč to spouštíš tak blbě, když už máš na prvním řádku správně shebang?
stačí spustit ./test.sh, jen je třeba chmodnout x bit.