Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno 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

Předmět Autor Datum
#!/bin/bash MAXSIZE=0 SIZE=0 cd /home/uzivatel/test for f in $(ls *); do echo $f SIZE=`stat -c %s…
Kiloviktor 22.07.2014 15:39
Kiloviktor
Ahoj, dík za radu, ale nejde to. Moje distro zase nemá příkaz "let". Teď je to takhle: #!/bin/bas…
snaider82 23.07.2014 07:41
snaider82
tak to možná nepoužíváš bash: http://www.gnu.org/software/bash/manual/bashref.ht ml#Shell-Arithmeti…
touchwood 23.07.2014 08:29
touchwood
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 nak…
snaider82 23.07.2014 09:01
snaider82
proč to spouštíš tak blbě, když už máš na prvním řádku správně shebang? stačí spustit ./test.sh, je… poslední
touchwood 23.07.2014 10:26
touchwood

#!/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:

#!/bin/bash
MAXSIZE=0
SIZE=0

cd /home/uzivatel/test

for f in $(ls *); do
echo $SIZE
SIZE=`stat -c %s $f`
MAXSIZE=MAXSIZE+SIZE
done

echo "$MAXSIZE"

To vypíše

0
1218
3773
5001
11996950
607518
23054
1262
MAXSIZE+SIZE

Pokud tam do vzorce zadám

MAXSIZE=$MAXSIZE+$SIZE

Vypíše to

0+1218+3773+5001+11996950 ...

A tak dál, ale ne celkový součet.

Napadá někoho prosím jak to udělat?

Zpět do poradny Odpovědět na původní otázku Nahoru