MATERIAŁY DO PRZEDMIOTU SOP - LEKCJA 4





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.

created by: Tomasz Kaszuba 2007

Valid HTML 4.01 Transitional