Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: Misa09 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:
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:
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 :
celkem=`expr $celkem + $zk`
celkem=$((celkem + zk))
nic nepomohlo....
díky za radu
-
vypis si obsah promenny zk pred tim nez ti to slitne.
-
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?
}
-
ad.x) $(.. egrep -o '\!.*'|tr -d !) lze nahradit $(sed 's/^.*\!\(.*\)$/\1/')
-
Moc děkuji pomohlo
celkem=$(($celkem + $(vyraz_ktery_jsme_dosazovali_do_zk)));
akorát je zvlastní, že když jsem zkoušela smazat jednu tu zavorku tak to nefungovalo :-)