background image

 

 

 

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. 

 
 

background image

 

 

 
#!/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. 

#!/bin/bash  

function quit { 

 

exit 

}   

function e { 

 

echo $1  

}   

e Hello 

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ć.