BASH sinällään hallitsee vain kokonaisluvut. Desimaali- sun muiden lukujen käyttämiseksi on kuitenkin konsteja.	Käsky seq tuntee desimaaliluvut.

intmax=9223372036854775807
intmin=-9223372036854775808 		

echo $((1+2))                           # tulostaa 3
echo $[ 1 + 2 ]                         # tulostaa 3
let a=1+2; echo $a                      # tulostaa 3
declare -i a; a=$(echo "1+2"); echo $a  # tulostaa 3
a=0; echo $((a = a + 3))                # tulostaa 3
a=1; echo $((a +=2))                    # tulostaa 3 mutta a=1; a+=2; echo $a tulostaa 12; siis kyseessä on käsky tekstijonon käsittelemiseksi, ei matemaattinen käsky
a=2; let a++; echo $a                   # tulostaa 3 
a=2; (( a++ )); echo $a                 # tulostaa 3 
a=2; echo $((a++))                      # tulostaa 2 -> a tulostuu jonka jälkeen a:n arvoa kasvatetaan
a=2; echo $((++a))                      # tulostaa 3 -> kasvattaa a:n arvoa jonka jälkeen a tulostuu      
a=2; let "a += 1"; echo $a              # tulostaa 3
a=2; b=1; echo $((a+b))                 # tulostaa 3      
echo $((a = RANDOM % 10 + 1))           # tulostaa satunnaisluvun väliltä 1-10 ja asettaa sen a:n arvoksi
- mikäli luvussa on edessä nollia niin BASH käsittää sen oktaaliluvuksi. Etunollat voi poistaa käskyllä: a=${a/*(0)/}
exclude=apu; exclude+== ; echo $exclude # tulostaa apu= -> tuo vikan = paikalla voi olla merkki, sana tai lause lainausmerkeissä, siis kyse ei ole matemaattisesta 
i=3; echo $(($i+$(($i%2))))             # tulostaa 4; siis mikäli luku on pariton niin sitä kasvatetaan yhdellä joten siitä tulee parillinen. awk:lla: i=i+i%2

((10 > 6)); echo $?  # tulostaa 0 sillä komento onnistuu eikä kyseessä ole totuusarvo.  ($?->kuinka onnistui viimeksisuoritettu komento)
echo $((10 > 6))     # tulostaa 1 sillä nyt on kyse totuusarvosta.

(( 0 )) && echo tosi || echo epätosi   # tulostaa epätosi sillä ehto tarkistaa matemaattista arvoa
[[ 0 ]] && echo tosi || echo epätosi   # tulostaa tosi sillä ehto tarkistaa onko tekstijonossa jotakin

kertomat 1-20 kannattaa laskea kaavalla: echo $(($(seq -s* 20)))
 
echo "7.1*8.2" | bc  # tulostaa 58.2
echo $(echo "scale=1000; 4*a(1)" | bc -l) | tr -d "\\ " # laskee piin arvon, a=arctan
echo $(echo "scale=10; s(1)"   | bc -l) # tulostaa sinin radiaanista
echo "7 8 * p" | dc  # tulostaa 56; työnnä pinoon 7 ja sitten 8, sitten suorita operaatio * (joka hakee pinosta päällimmäiset) ja sitten tulosta
echo "16 2 o p" | dc # tulostaa 10000; työnnä kymmenkantaluku pinon päälle, muunna se 2-kantaan ja tulosta
dc -e '6k2vp'        # 2:n neliöjuuri kuudella numerolla
dc -e '4d*p          # 16
dc -e '2k2.5 2^p'    # 6.25

echo 3 4 | awk  '{ printf( "%3.7f\n", sqrt($1*$1 + $2*$2) ) }' # laskee hypotenuusan kun sivut ovat 3 ja 4
echo 2.71 | awk  '{ printf( "%3.7f\n", log($1) ) }'            # ln. Muut: atan2(y,x), cos(x), exp(x), int(x), rand(), sin(x), srand(expr)  
function kertoma (){ if [ "$1" -gt "1" ];then i=`expr $1 - 1`;j=`kertoma $i`;k= echo "$(echo $1)*$(echo $j)" | bc;echo $k;else echo 1;fi;}
käsky: <factor x>  laskee x:n tekijät
kertoma=$(echo 10000 | dc -e '?[q]sQ[d1=Qd1-lFx*]dsFxp'  ) ; echo $kertoma | tr -d \\ | tr -d " "  # yli 52 antaa tulokseen kenoja ja ne poistetaan: | tr -d \\
absoluuttiarvon laskeminen: luku=-2; echo ${luku#[-+]} # siis poistaa edestä etumerkin jo sellainen on. Tai: ((abs = (a >= 0) ? a : -a))
echo $((0x9abc)) # tulostaa 39612 elikkä muunnos hexa-kannasta desimaaliseen. x pois -> oktaali

b=5; (( a = b==5 ? 1 : 0 )); echo $a # tulostaa 0; ? on ternaarisen ehdon merkki: tulosta seuraavista se jonka ehto toteutuu, siis merkki : on jakopiste
**
Xoscope does not work straight away on the newer Ubuntu distros with ALSA sound system. Workaround: Start it from the terminal with "padsp xoscope" This can be made permanent under System - Preferences - Main Menu.


  



