04
Metodyka i Techniki Programowania
Programowanie w języku powłoki
mgr inż. Michał Grega
2007-10-11
W ćwiczeniu użyto materiałów ze strony
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html#toc10
UWAGA: Zadania proszę wykonać w systemie lokalnym (knoppix)!
Ćwiczenie 1 Powłoki
Shell (ang. muszla, powłoka) to podstawowy interfejs użytkownika w środowisku Unix. Istnieje kilka rodzajów
powłok. Często spotykane to
sh
(Bourne shell),
bash
(Bourn-again shell),
tcsh
(TC-shell).
Proszę zapoznać się z różnicami pomiędzy powłokami (na przykład)
http://en.wikipedia.org/wiki/Unix_shell
http://www.faqs.org/faqs/unix-faq/shell/shell-differences/
http://en.wikipedia.org/wiki/Comparison_of_computer_shells
Wykład „01_02_03”, slajd 21.
Proszę sprawdzić, które powłoki są dostępne. Powłokę zmienia się poprzez podanie jej nazwy.
Ćwiczenie 2 Zmienne środowiskowe
Zapoznaj się z ustawionymi w systemie zmiennymi środowiskowymi (polecenie
env, export, setenv
), zastanów
się nad ich znaczeniem – zmienne SHELL, PATH, HOME, USER
Ustaw zmienną P1 przypisując jej wartość „test”.
Ćwiczenie 3 Pierwszy skrypt w języku powłoki
Za pomocą edytora tekstu stwórz plik o następującej treści:
#!/bin/bash
echo Hello World
Zapisz plik, zmień uprawnienia tak, aby plik był wykonywalny i uruchom go.
Pierwsza linia pliku informuje system, jakiego interpretera użyć. Druga linia wywołuje polecenie
echo
, które
wypisze na ekranie tekst „Hello World”.
ZADANIE
1. Napisz skrypt, którego zadaniem będzie zapisanie zawartości katalogu do pliku tekstowego
2. Zmodyfikuj zmienną systemową PATH w taki sposób, aby skrypt był uruchamialny z dowolnego miejsca w
systemie plików. UWAGA – nie nadpisz zmiennej PATH nowymi danymi lecz dodaj do niej nową ścieżkę za
pomocą składni:
PATH=$PATH:/nowykatalog
Ćwiczenie 3 Zmienne
Programując w języku powłoki przyjmuje się (jako dobry zwyczaj, zapewniający czytelność kodu) pisanie nazw
zmiennych Z WIELKICH LITER. Zapoznaj się z działaniem następującego skryptu.
#!/bin/bash
STR="Hello World!"
echo $STR
ZADANIE
1. Napisz skrypt, którego zadaniem będzie ustawienie zmiennej systemowej P1 na wartość „true”. W
skrypcie użyj zmiennych.
Ćwiczenie 4 Pętla if else
Pętla if (jeżeli) else (w przeciwnym razie) działa w następujący sposób: jeżeli (if) warunek jest prawdziwy wykonaj
coś, w przeciwnym razie (else) wykonaj coś innego.
#!/bin/bash
T1="foo"
T2="bar"
if [ "$T1" = "$T2" ]; then
echo warunek jest prawdziwy
else
echo warunek jest falszywy
fi
Powyższy skrypt sprawdza, czy zmienna T1 jest równa zmiennej T2 i w zależności od tego zwraca odpowiedni
komunikat testowy. Napisz taki (lub podobny) skrypt i eksperymentuj z warunkami. Zwróć uwagę na wcięcia w
kodzie – dobra praktyka programistyczna zaleca wyróżnianie elementów kodu w pętli za pomocą wcięcia wielkości
jednej tabulacji.
ZADANIE
1. Napisz skrypt, który w zależności od wartości logicznej (true lub false) zmiennej środowiskowej P1 będzie
wyświetlał na ekranie odmienne komunikaty
Ćwiczenie 4 Funkcje
Funkcje to pewne bloki programu wykonujące określone zadania. Służą one (najczęściej) uproszczeniu procesu
programowania. Funkcje mogą przyjmować parametry i zwracać wartości.
1
#!/bin/bash
2
function quit {
3
exit
4
}
5
function e {
6
echo $1
7
}
8
e Hello
9
e World
10
quit
11
echo foo
W powyższym przykładzie zdefiniowano dwie funkcje – o nazwie „quit” w linii 2 oraz „e” w linii 6. Funkcja „quit” nie
przyjmuje parametrów i zawiera jedno polecenie – „exit”. Funkcja ta jest wywołana poprzez nazwę w linii 10.
Funkcja „e” przyjmuje parametr i wykonuje polecenie „echo”. Funkcja ta jest wywoływana, wraz z parametrem, w
liniach 8 oraz 9. W linii 8 funkcja jest wywoływana poprzez nazwę „e” z parametrem „Hello”. Do parametru tego
funkcja ma dostęp za pośrednictwem zmiennej $1. Tak więc wywołanie funkcji „e” z parametrem „Hello” jest
jednoznaczne z wywołaniem polecenia
echo Hello
. Zwróć uwagę na wcięcia w kodzie.
Ćwiczenie 5 Pobieranie danych od użytkownika
Programując w języku powłoki istnieje możliwość pobrania danych od użytkownika w trakcie wykonywania
programu.
#!/bin/bash
echo Please, enter your name
read NAME
echo "Hi $NAME!"
W powyższym przykładzie skrypt pobiera od użytkownika jego imię.
ZADANIE:
1) Napisz skrypt, który pobierze od użytkownika wartość, następnie sprawdzi czy zmienna środowiskowa
P1 jest ustawiona na podaną przez użytkownika wartość. Jeśli jest – wyświetli odpowiedni komunikat.
Jeśli nie jest – ustawi ją na podaną wartość.
2) * Zmodyfikuj powyższy skrypt tak, aby w wywołaniu skryptu można było podać nazwę zmiennej
systemowej, której wartość chce się ustawić.