powrót
Ćwiczenia 4
;
Przykład:
$ cd; ls
&&
Przykład:
grep XX plik && more plik
||
Przykład:
grep XX plik || echo "XX nie znaleziono"
( )
Przykład:
$ (date; who; pwd) > plik_log
echo
$ echo <napis>
Przełączniki:
-n
-e
Przykład:
$ echo -e "napis\n"
'
Przykład:
$ echo 'Książka "Systemy Operacyjne"'
"
Przykład:
$ echo "Wartością \$HOME jest $HOME"
\
Przykład:
$ echo "Książka \"Systemy Operacyjne\""
`
Przykład:
$ echo "Masz `ls | wc -l` pliki w `pwd`"
$ grep XX `cat lista`
Zmienne
$
Przykład:
$ ZM=2
$ echo $ZM
HOME
Przykład:
$ echo $HOME
PATH
Przykład:
$ echo $PATH
PS1 PS2
Przykład:
$ echo $PS1
env
Przykład:
$ env | less
set
Przykład:
$ set | less
unset
Przykład:
$ unset zm
$ set | less
export
Przełączniki:
-n
Przykłady:
$ zm=1
$ bash
$ echo $zm
$ exit
$ export zm
$ bash
$ echo $zm
$ exit
$ export -n zm
#
Przykłady:
Utwórz plik plik.sh
#!/bin/bash
# komentarz
echo "Cześć"
$ ./plik.sh
Zmienne specjalne
$#
$@
$0-9
$?
$$
Zmienne tablicowe
Przykłady:
t=(1 2 3)
echo $t
echo $t[1]
echo ${t[1]}
echo ${t[*]}
echo ${#t[@]}
Przydatne programy
test
-f <plik>
-d <plik>
-r <plik>
-w <plik>
-x <plik>
-e <plik>
-z <łańcuch>
-n <łańcuch>
<liczba> -eq <liczba> # =
<liczba> -ne <liczba> # !=
<liczba> -lt <liczba> # <
<liczba> -le <liczba> # <=
<liczba> -gt <liczba> # >
<liczba> -ge <liczba> # >=
! <wyrażenie>
<wyrażenie> -a <wyrażenie>
<wyrażenie> -o <wyrażenie>
Przykłady:
$ test -d <katalog> && echo 'katalog'
expr
Przykłady:
$ expr 2 + 2
$ expr 2 + 2 * 2 # błąd!
seq
Przykłady:
$ seq 1 10
eval
Przykłady:
$ x=zm
$ y=3
$ zm3=brawo
$ echo \$$x$y
$ eval "echo \$$x$y"
Instrukcje sterujące
if
if <warunek1>
then
<instrukcja 1>
elif <warunek2>
then
<instrukcja 2>
else
<instrukcja 3>
fi
Inna notacja
if `test -f plik`
echo "Jest"
fi
if [ -f plik ]
echo "Jest"
fi
echo `expr 2 + 2`
echo $((2 + 2))
echo $[2 + 2]
case
case <zm> in
"wzorzec 1") <instrukcja 1> ;;
"wzorzec 2") <instrukcja 2> ;;
*) <instrukcja domyślna> ;;
esac
while
while <warunek>
do
<instrukcje>
done
for
for <zmienna> in <lista>
do
<instrukcje>
done
Wejście/wyjście dla skryptów
read
Przełączniki:
-p ">"
-a #tablica
-e #do zmiennej REPLY
Przykłady:
read a
read -p ">" b
read -a T
read -e
shift
Przykłady:
#!/bin/bash
echo $@
shift
echo $@
exit
Przykłady:
exit 7
$ echo $?
Zadania:
- Napisz skrypt, który wypisze liczbę argumentów.
- Napisz skrypt, który policzy kwadrat sumy kolejnych n liczb, gdzie n podane jako argument.
- Napisz skrypt, który pomnoży wszystkie podane argumenty.
- Napisz skrypt, który wypisze parzyste argumenty.
- Napisz skrypt, który zachowa się jak timer. Przyjmujący dwa argumenty (liczbę sekund i słowo alarmu) , a w przypadku braku drugiego argumentu wypisze na koniec słowo "ALARM!".
- Napisz skrypt, który dla każdego z plików podanych jako argumenty wywołania posortuje jego zawartość.
- Napisz skrypt, który dla każdego z plików podanych jako argumenty wywołania wyświetli w kolejnych liniach 3 najczęściej powtarzające się w nim słowa.
- Napisz skrypt, który będzie kopiował plik podany jako pierwszy argument do wszystkich katalogów podanych jako kolejne argumenty wywołania.