Nedanstående kod fördubblar siffran 2 åtta gånger.
| Code: |
#!/bin/bash
# kod: M Wallin 2007-06-04
function dubbla {
echo $TAL
(( TAL = TAL*TAL ))
(( ANTAL-- ))
(( ANTAL )) && dubbla
}
TAL=2; ANTAL=8; dubbla
|
Utdata:
2
4
16
256
65536
4294967296
0
0
BASH är helt enkelt inte bra på att räkna. Nästa script delar siffran 1 med 3 åtta gånger.
| Code: |
#!/bin/bash
# kod: M Wallin 2007-06-04
function dela {
echo $TAL
(( TAL = TAL/3 ))
(( ANTAL-- ))
(( ANTAL )) && dela
}
TAL=1; ANTAL=8; dela
|
Utdata
1
0
0
0
0
0
0
0
Ja, det är lika illa där. Därför använder man sig av kommandot 'bc' när man ska räkna med höga tal eller decimaltal.
| Code: |
echo "scale=4;1/3" | bc
|
.3333
Scripten får då följande utseende:
| Code: |
#!/bin/bash
# kod: M Wallin 2007-06-04
function dubbla {
echo $TAL
TAL=$(echo "$TAL*$TAL" | bc)
(( ANTAL-- ))
(( ANTAL )) && dubbla || exit 0
}
TAL=2; ANTAL=8; dubbla
|
2
4
16
256
65536
4294967296
18446744073709551616
340282366920938463463374607431768211456
| Code: |
#!/bin/bash
# kod: M Wallin 2007-06-04
function dela {
echo $TAL
TAL=$(echo "scale=4;$TAL/3" | bc)
(( ANTAL-- ))
(( ANTAL )) && dela || exit 0
}
TAL=1; ANTAL=8; dela
|
1
.3333
.1111
.0370
.0123
.0041
.0013
.0004