1. Arytmetyka
W bashu mamy następujące operatory arytmetyczne:
+ | dodawanie |
- | odejmowanie |
* | mnożenie |
/ | dzielenie |
% | reszta z dzielenia (modulo) |
** | potęgowanie |
Przykład wykorzystania tych operatorów:
#!/bin/bash X=9 Y=4 # dodawanie let Z=X+Y echo "$X + $Y = $Z" # odejmowanie let Z=X-Y echo "$X - $Y = $Z" # mnozenie let Z=X*Y echo "$X * $Y = $Z" # dzielenie let Z=X/Y echo "$X / $Y = $Z" # reszta z dzielenia (modulo) let Z=X%Y echo "$X modulo $Y = $Z" # potegowanie let Z=X**Y echo "$X^$Y = $Z"
Uruchamiając powyższy skrypt widać, że bash operuje tylko na liczbach całkowitych tzn. 9/4 =2. Resztę z dzielenia otrzymujemy po wykonaniu operacji modulo.
Mamy też operatory arytmetyczne bitowe:
>> | przesunięcie bitowe w prawo |
<< | przesunięcie bitowe w lewo |
~ | bitowa negacja |
& | AND bitowe |
| | OR bitowe |
^ | XOR bitowe |
#!/bin/bash X=8 Y=1 # przesuniecie bitowe w prawo let "Z=X>>2" echo "$Z" # przesuniecie bitowe w lewo let "Z=X<<2" echo "$Z" # bitowa negacja let "Z=~X" echo "$Z" # AND bitowe let "Z=X&Y" echo "$Z" # OR bitowe let "Z=X|Y" echo "$Z" # XOR bitowe let "Z=X^Y" echo "$Z"
W bashu można też przeliczać systemy liczbowe:
#!/bin/bash declare -i a #deklaracja zmiennej calkowitej #BIN->DEC a=2#1001 echo $a #HEX->DEC a=16#EF echo $a
2. Pętle
Pętla for - wykonuje polecenia zawarte wewnątrz pętli, na każdym składniku listy (iteracja
).
for zmienna in lista
do
polecenia
done
Na poniższym przykładzie mamy dwie pętle for. Pierwsza wyświetla elementy listy a druga wszystkie pliki o rozszerzeniu .sh:
#!/bin/bash for x in apple pear strawberry do echo "This is $x" done for plik_sh in *.sh do echo $plik_sh done
I tu przychodzi następujące pytanie - jak odliczać kolejne wartości liczbowe w pętli for. Jest kilka sposobów. Oto jeden z nich:
#!/bin/bash for i in {1..10} do echo $i done
Pętla while -
sprawdza warunek czy jest prawdziwy, jeśli tak
to wykonane zostaną polecenia wewnątrz pętli, gdy warunek stanie się fałszywy pętla zostanie
zakończona.
while warunek
do
polecenia
done
Przykład:
#!/bin/bash x=1 while [ $x -le 10 ] #-le mniejsze badz rowne do echo $x x=$[x+1] done
Pętla until - działa odwrotnie niż while; polecenia w pętli wykonywane są, gdy warunek jest fałszywy - aż stanie się prawdziwy.
until warunek
do
polecenia
done
Przykład:
#!/bin/bash x=1 until [ $x -ge 10 ] #-le wieksze badz rowne do echo $x x=$[x+1] done
Koniec części drugiej, cdn.
Brak komentarzy:
Prześlij komentarz