Blog:

Fragmenty artykułów z książek wydawnictwa Helion.pl

Fragmenty artykułów z książek wydawnictwa Helion.pl

Polecasz?+3  
« wróć do listy
Wpis: 1 z 19
Następny Wpis NA LIŚCIE (W DÓŁ)
Tworzenie skryptów powłoki. Opis parametrów funkcji - cz.1 Fragmenty artykułów z książek wydawnictwa Helion.pl
21 osób twierdzi: warto przeczytać, a 1 , że nie

Fragment (druga, ostatnia część) rozdziału nr 4 Tworzenie skryptów powłoki z książki: Linux. Komendy i polecenia. Wydanie III.

Polecenie test

Polecenie test służy do porównywania liczb lub ciągów znaków i wypisywania do zmiennej wartości porównania.

-d
Parametr sprawdza, czy plik o podanej nazwie jest katalogiem.

#!/bin/bash
test -d plik.txt
echo $?

[lukasz@localhost ~]$ ./skrypt
1

-f
Parametr sprawdza, czy plik jest zwykłym plikiem, czy też z prawami do wykonywania.

#!/bin/bash
test -f plik.txt
echo $?

[lukasz@localhost ~]$ ./skrypt
0

-L
Parametr sprawdza, czy plik jest dowiązaniem symbolicznym.

#!/bin/bash
test -L plik.txt
echo $?

[lukasz@localhost ~]$ ./skrypt
1

-r
Parametr sprawdza, czy dany plik istnieje i czy można go odczytać.

#!/bin/bash
test -r plik.txt
echo $?

[lukasz@localhost ~]$ ./skrypt
0

-w
Parametr sprawdza, czy dany plik istnieje i czy można go zapisać.

#!/bin/bash
test -w plik.txt
echo $?

[lukasz@localhost ~]$ ./skrypt
0

-x
Parametr sprawdza, czy plik o danej nazwie istnieje i czy można go uruchomić.

#!/bin/bash
test -x plik.txt
echo $?

[lukasz@localhost ~]$ ./skrypt
1

-s
Parametr sprawdza, czy dany plik został zapisany na dysku i czy jego wartość (długość) nie jest zerowa.

#!/bin/bash
test -s plik.txt
echo $?

[lukasz@localhost ~]$ ./skrypt
0

-nt
Parametr sprawdza, czy plik1 jest nowszy od plik2.

#!/bin/bash
test plik.txt -nt plik2.txt
echo $?

[lukasz@localhost ~]$ ./skrypt
1

-ot
Parametr sprawdza, czy plik1 jest starszy od plik2.

#!/bin/bash
test plik.txt -ot plik2.txt
echo $?

[lukasz@localhost ~]$ ./skrypt
0

=
Parametr sprawdza, czy ciągi podane po jego obu stronach są identyczne.

#!/bin/bash
test "abc"="abc"
echo $?

[lukasz@localhost ~]$ ./skrypt
0

!=
Parametr sprawdza, czy ciągi podane po jego obu stronach nie są identyczne.

#!/bin/bash
test "abc"!="abc"
echo $?

[lukasz@localhost ~]$ ./skrypt
1

-z
Parametr sprawdza, czy ciąg podany za nim ma zerową długość.

#!/bin/bash
test -z abc
echo $?

[lukasz@localhost ~]$ ./skrypt
1

-n
Parametr sprawdza, czy ciąg podany za nim ma niezerową długość.

#!/bin/bash
test -n abc
echo $?

[lukasz@localhost ~]$ ./skrypt
0

-eq
Parametr sprawdza, czy wartości podane po jego obu stronach są sobie równe.

#!/bin/bash
test 1 -eq 1
echo $?

[lukasz@localhost ~]$ ./skrypt
0

-ne
Parametr sprawdza, czy wartości podane po jego obu stronach nie są sobie równe.

#!/bin/bash
test 1 -ne 1
echo $?

[lukasz@localhost ~]$ ./skrypt
1

-gt
Parametr sprawdza, czy pierwsza wartość jest większa od drugiej.

#!/bin/bash
test 2 -gt 1
echo $?

[lukasz@localhost ~]$ ./skrypt
0

-ge
Parametr sprawdza, czy pierwsza wartość jest większa lub równa drugiej.

#!/bin/bash
test 2 -ge 1
echo $?

[lukasz@localhost ~]$ ./skrypt
0

-lt
Parametr sprawdza, czy pierwsza wartość jest mniejsza od drugiej.

#!/bin/bash
test 2 -lt 1
echo $?

[lukasz@localhost ~]$ ./skrypt
1

-le
Parametr sprawdza, czy pierwsza wartość jest mniejsza lub równa drugiej.

#!/bin/bash
test 2 -le 1
echo $?

[lukasz@localhost ~]$ ./skrypt
1

!
Parametr ten służy do negowania testu, bardzo często stosuje się go w instrukcjach warunkowych i w pętlach.

Instrukcja if

Instrukcja sprawdza, czy dany warunek jest spełniony, i w zależności od tego wykonuje odpowiednie czynności.

if wartość
then
zrób coś
fi
Najprostszy wariant polecenia if

#!/bin/bash
if [ 1 = 1 ]
then
echo Wartosci sa rowne
fi

Przykład skryptu sprawdzającego, czy wartości są równe.

[lukasz@localhost ~]$ ./skrypt
Wartosci sa rowne

Ten warunek sprawdza, czy wartość jest spełniona, i w zależności od wyniku sprawdzenia wykonuje określoną operację (wartość spełniona — zrób coś, w przeciwnym wypadku — zrób coś innego).

if wartość
then
zrób coś
else
zrób coś innego
fi

#!/bin/bash
if [ 1 = 2 ]
then
echo Wartosci sa rowne
else
echo Wartosci sa rozne
fi

Przykład skryptu sprawdzającego, czy wartości są równe, czy też nie.

[lukasz@localhost ~]$ ./skrypt
Wartosci sa rozne

Polecenie sprawdza, czy warunki są spełnione. W przypadku, gdyby którykolwiek z warunków został spełniony, wykona polecenie.

W przypadku, gdyby żaden z warunków nie został spełniony, wykona ono funkcję zrób coś innego.

If wartość
then
zrób coś
elif wartość2
then
zrób coś 2
elif ...
...
else
zrób coś innego
di

Instrukcja case

Instrukcja case sprawdza, czy warunek ma odpowiednią wartość, a następnie przechodzi do odpowiedniego fragmentu kodu w programie.

Case warunek in
odpoweidz1)
zrob coś 1
;;
Esac

Przykład skryptu sprawdzającego, jaką wartość ma liczba.

#!/bin/bash
wartosc=1
case "$wartosc" in
1)
echo Liczba ma wartosc 1
;;
2)
echo Liczba ma wartosc 2
;;
Esac

[lukasz@localhost ~]$ ./skrypt
Liczba ma wartosc 1

Pętla while

Pętla while powtarza wykonywanie określonych czynności dopóty, dopóki warunek w niej podany nie zostanie spełniony.

While polecenie
do
zrob coś
done

Oto skrypt z pętlą while wyświetlający liczbę i po każdym przejściu pętli (wykonaniu fragmentu skryptu) zwiększający ją o jeden. W przypadku, gdy liczba jest równa 2, skrypt kończy działanie.

#!/bin/bash
i=0
while [ $i -lt 2 ]
do
echo $i
i=`expr $i + 1`
done

[lukasz@localhost ~]$ ./skrypt
0
1

Pętla until

Pętla until powtarza polecenie w niej zapisane dopóty, dopóki warunek nie zostanie spełniony.

Until polecenie
do
zrob coś
done

Pętla for

Pętla for powtarza daną czynność żądaną liczbę razy (określoną w podanej do niej liczbie wykonań).

For zmienna in lista
do
zrob coś
done

Pętla for, która wyświetla w kolejnych liniach wszystkie wymienione w niej owoce.

#!/bin/bash
for owoc in Jablko Pomarancza Cytryna
do
echo $owoc
done

[lukasz@localhost ~]$ ./skrypt
Jablko
Pomarancza
Cytryna

Break

Polecenie break kończy działanie pętli, jeżeli podamy warunek do jej zakończenia.

#!/bin/bash
for owoc in Jablko Pomarancza Cytryna
do
echo $owoc
if [ "$owoc" = "Pomarancza" ]
then
break
fi
done

Ten skrypt ma zakończyć działanie (za pomocą polecenia break) po pojawieniu się tekstu Pomarancza.

[lukasz@localhost ~]$ ./skrypt
Jablko
Pomarancza

Continue

Polecenie continue wymusza przejście do kolejnej iteracji, czyli następnego kroku.

#!/bin/bash
for owoc in Jablko Pomarancza Cytryna
do
echo $owoc
if [ "$owoc" = "Pomarancza" ]
then
continue
fi
echo tekst przerywnika
done

W napisanym przez nas kodzie zadaniem instrukcji continue jest ukrycie napisu tekst przerywnika podczas przetwarzania „owocu”: Pomarancza.

[lukasz@localhost ~]$ ./skrypt
Jablko
tekst przerywnika
Pomarancza
Cytryna
tekst przerywnika

Argumenty pobierane z wiersza powłoki

Wszystkie napisane przez nas skrypty powłoki mogą przyjmować argumenty. Do argumentów wysłanych po uruchomieniu skryptu odwołujemy się za pomocą zmiennych $1, $2, $3 ... $n.

#!/bin/bash
echo "Dzisiaj pogoda była $1"

Przykładowy skrypt pobierze pierwszą wartość za jego nazwą i wstawi ją w miejsce $1, a następnie wyświetli ją na ekranie.

[lukasz@localhost ~]$ ./skrypt super
Dzisiaj pogoda była super

Pierwsza cześć:
http://www.linuxportal.pl/artykuly/tworzenie-skryp/.../1-id112965

Udostępnij informacje o Wpisie w sieciach społecznościowych:
Polub LinuxPortal.pl:

Komentarze:

Nie ma jeszcze komentarzy. Dodaj swój komentarz.
logo:
Aby dodać komentarz: zaloguj się ikona LinuxPortal.pl ikona Facebook.com ikona Google+
Wpis: 1 z 19
W związku z wejściem w życie 25 maja 2018 roku nowego Rozporządzenia o Ochronie Danych Osobowych znanym jako "RODO" pragniemy poinformować Cię,
w jaki sposób przetwarzane są dane osobowe pozostawiane przez Ciebie podczas korzystania z LinuxPortal.pl.
Zapoznaj się z Polityką prywatności.

Klikając „Zamknij”, zamykasz ten komunikat i wyrażasz zgodę na przetwarzanie tych danych, w tym w plikach cookies, przez LinuxPortal.pl sp. z o.o. w celu realizacji usług zgodnie z Regulaminem.
Zamknij »