• Nie Znaleziono Wyników

2013-01-15 JarosławPiersa Wstępdosystemówwielozadaniowychlaboratorium21—bash

N/A
N/A
Protected

Academic year: 2021

Share "2013-01-15 JarosławPiersa Wstępdosystemówwielozadaniowychlaboratorium21—bash"

Copied!
16
0
0

Pełen tekst

(1)

Wstęp do systemów wielozadaniowych laboratorium 21 — bash

Jarosław Piersa

Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika

2013-01-15

(2)

Echo

#! / b i n / b a s h

echo ” H e l l o w o r l d ”

(3)

Echo i read

#! / b i n / b a s h

echo ” P o d a j j a k i s n a p i s ” r e a d zmienna

echo ” p o d a l e s n a p i s : ” $ zmienna

Zad. Napisz skrypt, który się przywita z użytkownikiem

(4)

if .. else

#! / b i n / b a s h

# w a r u n e k i f

echo ” P o d a j n a p i s \ ”B r z e c z y s z c z y k i e w i c z \” ” r e a d n a p i s

i f [ $ n a p i s = ” B r z e c z y s z c z y k i e w i c z ” ] ; then

#JP ˆ ˆ ˆ ˆ t e s p a c j e s a wazne ! !

echo ” P o d a l e s p o p r a w n y n a p i s ” e l s e

echo ” N i e l a t w i e j b y l o b y go s k o p i o w a c ? ” f i

Zad. Napisz skrypt, który poprosi użytkownika o potwierdzenie wyświetlenia pliku, zanim faktycznie go wyświetli

(5)

if .. elif .. else

#! / b i n / b a s h

echo ” P o d a j n a p i s \ ”B r z e c z y s z c z y k i e w i c z \” ” r e a d n a p i s

i f [ $ n a p i s = ” B r z e c z y s z c z y k i e w i c z ” ] ; then echo ” P o d a l e s p o p r a w n y n a p i s ”

e l i f [ $ n a p i s = ” b r z e c z y s z c z y k i e w i c z ” ] ; then echo ” Chyba k l a w i s z s h i f t s i e z a c i a l ” e l s e

echo ” N i e l a t w i e j b y l o b y go s k o p i o w a c ? ” f i

(6)

Czy istnieje plik

#! / b i n / b a s h

echo ” p o d a j nazwe p l i k u l u b k a t a l o g u ” r e a d nazwa

i f [ −d $nazwa ] ; then

cd $nazwa

e l i f [ −f $nazwa ] ; then c a t $nazwa

e l s e

echo ” n i e p o p r a w n a s c i e z k a ” f i

Zad. Napisz skrypt, który automatycznie wyświetla plik tekstowy lub listuje katalog.

(7)

Pętla for

#! / b i n / b a s h

f o r i i n { 1 . . 1 0 } ; do

echo $ i ” ˆ2 = ” ‘ e x p r $ i \∗ $ i ‘ done

Zad. Napisz skrypt, który rysuje romb o boku n

(8)

Argumenty wywołania

#! / b i n / b a s h

echo ” s k r y p t nazywa s i e ” $0

echo ”ma ” $# ” argumentow ”

echo ” p i e r w s z e t r z y t o ” $1 ” ” $2 ” ” $3 echo ” a p o z o s t a l e ”

f o r i i n $∗ ; do

echo $ i done

Zad. Napisz skrypt, który oblicza sumę podanych argumentów

(9)

Pętla for (w stylu c)

#! / b i n / b a s h

# t a w e r s j a f o r a w s t y l u c d z i a l a w bashu , f o r ( ( i =10; i >0; i − −));

do

echo $ i ” ˆ2 = ” ‘ e x p r $ i \∗ $ i ‘ done

Zad. Napisz skrypt, który oblicza sumę liczb od 1 do wczytanej

(10)

Pętla for po plikach w katalogu

#! / b i n / b a s h

f o r f i n ∗ . s h ; do

echo $ f c a t $ f done

Zad. Napisz skrypt, który wykonuje kopię wszystkich plików w katalogu: plik → plik.bak

(11)

Pętla while

#! / b i n / b a s h

w=” a l a ” i =0

echo ” n a p i s z \ ”k o n i e c \” aby z a k o n c z y c ”

w h i l e [ $w != ” k o n i e c ” ] ; do

r e a d w

i =‘ e x p r $ i + 1 ‘ ; done

echo ” Z a j e l o c i ” $ i ” p r o b ( y ) aby z a k o n c z y c s k r y p t ”

(12)

Pętla while + case

#! / b i n / b a s h

w h i l e t r u e ; do

r e a d a

c a s e $a i n

” ”) c o n t i n u e

; ;

”mam d o s c ”) b r e a k

; ;

∗ )

echo ” N a p i s a l e s : ” $a c o n t i n u e

; ; e s a c

done

(13)

Zmienne specjalne

#! / b i n / b a s h

echo $0 echo $∗

echo $1 echo $2 echo $#

echo $$

a=3

# $? j e s t kodem b l e d u zwroconym p r z e z o s t a t n i a o p e r a c j e echo $?

# $? == 0 −− o p e r a c j a z a k o n c z o n a p o m y s l n i e l s / r o o t 2> / d e v / n u l l

(14)

Arytmetyka

#! / b i n / b a s h

a =‘ e x p r 2 + 2 \∗ 2

i f [ $a −eq 6 ] ; then echo ” a=6”

f i

i f [ $a −ge 4 ] ; then echo ” a>=4”

f i

i f [ $a −le 8 ] ; then echo ” a<=8”

f i

i f [ $a −gt 4 ] ; then echo ” a>4”

i f [ $a −lt 8 ] ; then echo ” a<8”

f i

i f [ $a −ne 0 ] ; then echo ” a !=8 ” f i

i f [ $a −gt 0 −a $a −lt 10 ] ; then

echo ” 0 < a < 10 ” f i

i f [ $a −lt 0 −o $a −gt 5 ] ; then

echo ” a<0 | | a>5”

f i

(15)

Zadanie domowe 1

Napisz skrypt w bash, który

skompiluje za pomocągcc wszystkie pliki o rozszerzeniu.ci za pomocąg++pliki o rozszerzeniucpp w bieżącym folderze kompilacja ma być z flagą-o nazwa pliku

np.plik o nazwieala ma kota.cma być skompilowany komendą: gcc -o ala ma kota ala ma kota.c

na koniec wyświetli podsumowanie ile kompilacji dokonał i ile zakończyło się powodzeniem

(16)

Zadanie domowe 2

Napisz skrypt bashowy, który będzie inteligentnymls / less-em jeżeli zostanie wywołany bez dodatkowych argumentów, to wylistuje bieżący katalog

jeżeli zawiera dodatkowe argumenty to wylistuje je (ls), jeżeli są katalogami

wyświetli ich zawartość (less), jeżeli są plikami

wyświetli stosowny komunikat, jeżeli podany argument nie jest plikiem w systemie

dodatkowo może przechwycić i przekazać opcjonalne parametry dols-a np. -l -a itp. (punkt nieobowiązkowy)

Cytaty

Powiązane dokumenty

Tetrisa możemy kłaść w dowolny sposób na szachownicę tak, aby boki tetrisa pokry- wały się z bokami pól na szachownicy, możemy również go obracać.. Mamy dane dwa

Ile jest tych

Trudniej jest porównać dwa ułamki zwykłe od dwóch liczb naturalnych, na które wystarczy, że zerkniemy okiem, a już potrafimy wskazać większą z nich.. W przypadku dwóch

Jeżeli stan epidemii zostanie odwołany a dzieci powrócą do szkół, decyzja o organizacji uroczystości pierwszokomunijnych będzie uzależniona od woli rodziców w porozumieniu

Dzisiaj kolejna historyjka obrazkowa, dowiemy się co słychać u Tigera, otwórzcie proszę książkę na stronie 52, przyjrzyjcie się obrazkom i zastanówcie o czym będzie

• W przypadku braku wersji „print” zamawianych czasopism oraz ich ewentualnej bezpłatnej wersji „online”, za dostarczenie której dostawca może uzyskać dodatkową

 Gdy do jednego polecenia zdający podaje kilka odpowiedzi (z których jedna jest prawidłowa, inne nieprawidłowe), to nie otrzymuje punktów za żadną z nich..  Jeżeli

- Należy zwrócić uwagę na zależność wartości wyniku końcowego od ewentualnych wcześniejszych zaokrągleń oraz uznać za poprawne wszystkie wyniki, które są