Część 1: Skrypty i instrukcje strukturalne c.d.
Wyrażenia arytmetyczne
Można obliczać proste wyrażenia matematyczne typu: | & < <= = != >= > + - * / %
wyrażenia
- expr WYRAZENIE
- $[ WYRAZENIE ]
- $(( WYRAZENIE ))
na przykład:
#!/bin/bash
x=5
y=8
suma=$[ $x + $y ]
roznica=$(( $x - $y ))
takiesame=`expr $x = $y`
echo "suma= $suma"
echo "roznica= $roznica"
echo "$x=$y -> $takiesame"
while:
pętla z warunkiem
- składnia: while ... ; do ... done ,składnia
- pętla wykonuje się dopuki warunek jest spełniony
na przykład:
#!/bin/bash
x=5
while test $x -gt 0
do
echo "zmniejszam x, x=$x"
x=$[$x-1]
done
echo "x=$x"
until:
pętla z warunkiem
- składnia: until ... ; do ... done ,składnia
- pętla wykonuje się dopuki warunek nie jest spełniony
na przykład:
#!/bin/bash
x=5
until test $x -lt 1
do
echo "zmniejszam x, x=$x"
x=$[$x-1]
done
echo "x=$x"
case
instrukcja wybierająca
- case ... in <przypadki> esac
- przypadek --> wzorzec | wzorzec | ... | wzorzec ) <instrukcje> ;;
na przykład:
#!/bin/bash
echo wpisz a lub b:
read x
case $x in
a) echo "wpisano a";;
b | c) echo "wpisano b lub c";;
*) echo "wpisano co innego";;
esac
funkcje
funkcje pozwalają na wywoływanie serii operacji, pozwalają na przekazywanie, zwracanie parametrów
- <nazwa> () { <instrukcje> [return ....] }
- funkcje wywołuje się PO ich zdefiniowaniu
- można przekazywać parametry tak jak do skryptów
na przykład:
#!/bin/bash
sum()
{
echo $@
echo -n "$1 * $2 = "
return $[$1 + $2]
}
echo podaj x
read x
echo podaj y
read y
sum $x $y
echo $?
Ćwiczenia:
1.Napisz skrypt, który wyświetli tabliczkę mnożenia:
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
2. Napisz skrypt, który wczyta plik zawierający liczby (po jednej w wierszu) i wypisze max, min i ich sumę. Jeśli plik jest pusty, to wypisze odpowiedni komunikat.
3. Slowa Fibonacciego sa zdefiniowane w nastepujacy sposob: F1=a, F2=b, Fn+2=FnFn+1. Oto kilka pierwszych slow Fibonacciego: a, b, ab, bab, abbab, bababbab, abbabbababbab.
Napisz skrypt, ktory przyjmuje jeden argument i wypisuje slowo Fibonacciego o podanym jako ten argument numerze.
4.Napisz skrypt, który sprawdzi, czy podany argument jest nazwą pliku i jak tak to go wyświetli i znajdzie w nim sekwencje "--" i policzy w ilu liniach ta sekwencja występuje , oraz wykona jego kopie tego pliku, przy czym kopia ma rozszerzenie "old". W kopii wszystkie znaki "-" powinny zostać zamienione na "+"
5.Napisz skrypt, który co kilka sekund sprawdza, czy w katalogu jest plik o podanej w argumencie nazwie, jeżeli nie to skrypt zasypia na kilka sekund i sprawdza później. Jeżeli tak, to skrypt wypisuje odpowiednią informację i się kończy.
6.Napisz skrypt, który wyświetli silnie z liczby a. , która jest wprowadzona z klawiatury. Liczba a musi być dodatnia. Użyć funkcji.
7.Mamy plik jak poniżej:
341 3452
234324 342
554 245
547 2342
234322 3344
42342 42
Każda linia zawsze składa się z dwóch kolumn. W każdej kolumnie mamy liczby. Napisz skrypt, który pobierze jeden argument. Argumentem tym będzie jednoargumentowy operator matematyczny + - * / , a zadaniem skryptu będzie wykonania operacji matematycznej na kolejnych liczbach odczytanych z naszego pliku. Skrypt ma wyświetlić wyniki dla każdej linii.
|