Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: sčítání BASH  (Přečteno 6622 krát)

Misa09

  • Návštěvník
  • Příspěvků: 35
sčítání BASH
« kdy: 29 Července 2008, 21:47:41 »
Ahoj, zkouším udělat jeden skript, který mimo jiné by měl sčítat čísla před jterými je "!".  Zkoušela jsem to takto:
Kód: [Vybrat]
i=0;
while [ $i -lt $pocet ];do
zk=`cat stromy|grep "$i)"|egrep -o '\!.*'|tr -d !`;
let "celkem=celkem+zk";
let i=i+1;
done
toto mě funguje, ale pouze do čísla kolem 1 300, kolem tohoto čísla se objeví hláška:
 
Kód: [Vybrat]
line 26: let: 39
12: syntax error in expression (error token is "12")
celkem 1342
sčítání od tohoto čísla nefunguje,na řádce 26 je let "celkem=celkem+zk";   
zkoušela jsem misto toho i :
Kód: [Vybrat]
celkem=`expr $celkem + $zk`
celkem=$((celkem + zk))
nic nepomohlo....
díky za radu

johniez

  • Návštěvník
  • Příspěvků: 81
    • http://www.johniez.com
Re: sčítání BASH
« Odpověď #1 kdy: 30 Července 2008, 11:43:01 »
vypis si obsah promenny zk pred tim nez ti to slitne.

nettezzaumana

  • Host
Re: sčítání BASH
« Odpověď #2 kdy: 30 Července 2008, 13:22:34 »
zk=`cat stromy|grep "$i)"|egrep -o '\!.*'|tr -d !`; // spatne, nemuze se provest
while [ $i -lt $pocet ];do .. // vhodnejsi je pouzit :: for((i=0;i<$pocet;i++)) { .. }

> a=5 b=3 && echo $(($a + $b))
8

let "celkem=celkem+zk"; // uplne spatne .. ma-li scitat, tak rozhodne nescita ^^^, takze konecny vysledek muze vypadat takto ::

for((i=0;i<$pocet;i++)) {
    celkem=$(($celkem + $(vyraz_ktery_jsme_dosazovali_do_zk))); // nac inicializovat novou promennou?
}
« Poslední změna: 30 Července 2008, 13:29:20 od nettezzaumana »

nettezzaumana

  • Host
Re: sčítání BASH
« Odpověď #3 kdy: 30 Července 2008, 13:44:35 »
ad.x) $(.. egrep -o '\!.*'|tr -d !) lze nahradit $(sed 's/^.*\!\(.*\)$/\1/')

Misa09

  • Návštěvník
  • Příspěvků: 35
Re: sčítání BASH
« Odpověď #4 kdy: 02 Srpna 2008, 12:02:55 »
Moc děkuji pomohlo
Kód: [Vybrat]
celkem=$(($celkem + $(vyraz_ktery_jsme_dosazovali_do_zk)));akorát je zvlastní, že když jsem zkoušela smazat jednu tu zavorku tak to nefungovalo :-)
« Poslední změna: 02 Srpna 2008, 15:30:50 od qUAKER »

 

Provoz zaštiťuje spolek OpenAlt.