BASH Skrypty

background image

BASH Skrypty

Polecenia BASHA można łączyć ze sobą tworząc skrypty, które dodatkowo mogą zawierać np. wyrażenia logiczne oraz odwoływać
się do innych aplikacji.

Jako zwykły użytkownik wykonaj w konsoli:
touch skrypt
chmod 755 skrypt

Następnie otwórz plik "skrypt" w edytorze (nano, pico, jakiś ze środowiska graficznego). I wpisz następującą
zawartość:

echo 'To jest tekst'

echo "A to drugi"
zmienna="cześć"

echo "Wartość zmiennej to: $zmienna"
echo 'Pojedynczy cudzysłów i $zmienna'

Następnie wykonaj plik wpisując w konsoli ./plik . Zobaczysz coś takiego:

To jest tekst

A to drugi
Wartość zmiennej to: cześć

Pojedynczy cudzysłów i $zmienna

Powyższy skrypt BASHa prezentuje podstawowe jego składniki. Polecenie echo wyświetla tekst, jeżeli jest
on w podwójnym cudzysłowie - będzie parsowany przez powłokę (zmienne zostaną zamienione na ich
wartości) jeżeli pojedyncze - tekst nie będzie parsowany przez powłokę. Zmienną deklarujemy:

zmienna = "wartość"

A wywołujemy za pomocą $zmienna (dodajemy znak dolara). Skrypt kończy wywołanie zmiennej w tekście
z podwójnymi i pojedynczymi cudzysłowami. W przypadku tych drugich "$zmienna" nie zostanie zamieniona
na wartość zmiennej. Zmienną można też wyświetlić bezpośrednio: echo $zmienna

Pobieranie danych od użytkownika

Chcemy skrypt, który poprosi użytkownika o dane, np:

echo 'Jak masz na imię?'
read zmienna

echo "Twoje imie to: $zmienna"

Wykonanie skryptu spowoduje wyświetlenie tekstu "Jak masz na imię?", a użytkownik będzie mógł
wprowadzić dane, np. jeżeli wpiszemy "Piotr" to skrypt odpowie "Twoje imie to: Piotr". Skorzystaliśmy tutaj
komendy read (read nazwa_zmiennej). Komenda ta czeka aż użytkownik wpisze coś i wciśnie enter. To co
wpisał przypisane zostanie zmiennej o podanej nazwie.

Skrypt przykładowy 1 - Generator wizytówki - coś ala BASHowa księga gości

Chcemy prosty skrypt BASHA, który pobierze dane takie jak Imię i Nazwisko, adres Email i numer GG i
zapisze do pliku. Oto kod

#!/bin/bash
echo 'Witaj w generatorze wizytówek v. 13.666'

echo '#####################################'
echo 'Program poprosi cię o wpisanie różnych danych.'

echo 'Po wpisaniu wciśnij Enter by przejść dalej.'
echo '#####################################'

echo 'Podaj swoje Imię i Nazwisko:'

background image

read name
echo 'Podaj swój adres E-Mail:'

read mail
echo 'Podaj numer Gadu-Gadu:'

read gg
echo '#####################################'

echo 'Pobieranie danych zakończone'
touch wizytowka.txt

echo "$name" >> wizytowka.txt
echo "Email: $mail" >> wizytowka.txt

echo "Gadu-Gadu $gg" >> wizytowka.txt
echo 'Generowanie wizytówki zakończone'

echo 'Plik wizytowka.txt gotowy!'
echo '#####################################'

Wykonanie skryptu będzie wyglądać np. tak:

Witaj w generatorze wizytówek v. 13.666

#####################################
Program poprosi cię o wpisanie różnych danych.

Po wpisaniu wciśnij Enter by przejść dalej.
#####################################

Podaj swoje Imię i Nazwisko:
Piotr M

Podaj swój adres E-Mail:
tajny@email.pl

Podaj numer Gadu-Gadu:
123456

#####################################
Pobieranie danych zakończone

Generowanie wizytówki zakończone
Plik wizytowka.txt gotowy!

#####################################

I stworzy plik wizytowka.txt o zawartości:

Piotr M
Email: tajny@email.pl

Gadu-Gadu 123456

Przy okazji >> dopisuje dane do pliku więc wielokrotne wywołanie skryptu nie nadpisze danych...

Parametry wywołania

Wiele aplikacji przyjmuje parametry, np. ls -a. Bardzo prosto parametry te "przechwycić".

#!/bin/bash
echo "Nazwa skryptu to: $0"

echo '------------------------------------'
echo "Nazwa pierwszego argumentu to: $1"

echo '------------------------------------'
echo "Wszystkie argumenty: $*"

echo '------------------------------------'
echo "Podałeś $# poleceń"

Wywołanie ./a2.sh polecenie1 polecenie2 polecenie3 wyświetli:

Nazwa skryptu to: ./a2.sh

------------------------------------
Nazwa pierwszego argumentu to: polecenie1

------------------------------------
Wszystkie argumenty: polecenie1 polecenie2 polecenie3

------------------------------------
Podałeś 3 poleceń

$0 - nazwa skryptu, $n - wartość n-tego parametru, $* - wszystkie parametry, $# - liczba poleceń.

background image

Skrypt przykładowy 2 - Generator wizytówki z wyborem pliku

#!/bin/bash
echo 'Witaj w generatorze wizytówek v. 13.666'

echo '#####################################'
echo 'Program poprosi cię o wpisanie różnych danych.'

echo 'Po wpisaniu wciśnij Enter by przejść dalej.'
echo '#####################################'

echo 'Podaj swoje Imię i Nazwisko:'
read name

echo 'Podaj swój adres E-Mail:'
read mail

echo 'Podaj numer Gadu-Gadu:'
read gg

echo '#####################################'
echo 'Pobieranie danych zakończone'

touch $1
echo "$name" >> $1

echo "Email: $mail" >> $1
echo "Gadu-Gadu $gg" >> $1

echo 'Generowanie wizytówki zakończone'
echo "Plik $1 gotowy!"

echo '#####################################'

Zakładamy że skrypt wywołujemy podając jeden parametr - nazwę pliku :)

Instrukcje warunkowe

Możemy korzystać z instrukcji warunkowych - Jeżeli coś to wtedy, a jeżeli nie to coś... Porównania i
operacje logiczne
:
PORÓWNANIA LICZBOWE

-gt: większy od
-lt: mniejszy od
-ge: większy, równy od
-le: mniejszy, równy od
-eq: równy
-ne: różny od

PORÓWNANIA TEKSTOWE

-z: sprawdza czy ciąg jest pusty
-n: sprawdza wartość ciągu
=: równy
!=: różny
Str: sprawdza czy ciąg jest zerowy

OPERACJE LOGICZNE

-a: Logiczne i (zamiast -a można stosować &&)
-o: Logiczne lub (można stosować też ||)
!: Logiczne nie

TESTY NA PLIKACH

-f: Plik istnieje i jest zwykłym plikiem
-s: Plik nie jest pusty
-r: Plik jest możliwy do odczytu
-w: Plik może być modyfikowany
-x: Plik może być uruchamiany
-d: Jest katalogiem
-h: Jest dowiązaniem symbolicznym

background image

-c: Nazwa odnosi się do urządzenia

Instrukcja warunkowa IF... ma postać:

if komenda then

akcja
fi

if komenda then

akcja
else

akcja
fi

Przykład:

if [ "$#" -gt 2 ]

then
echo 'Podałeś więcej niż 2 parametry'

else
echo 'Podałeś mniej niż 2 parametry'

fi

Wielkość liter operatorów i spacje mają znaczenie! Powyższy kod wyświetli "Podałeś więcej niż 2 parametr"
jeżeli wywołamy skrypt z 3 lub większą ilością parametrów, a "Podałeś mniej niż 2 parametry" jeżeli będzie
ich 2 lub mniej. Instrukcje warunkowe można rozbudowywać o elif - else if:

if [ "$#" -gt 2 ]
then

echo 'Podałeś więcej niż 2 parametry'
elif [ "$#" -eq 2 ]

then
echo 'Podałeś 2 parametry'

else
echo 'Podałeś mniej niż 2 parametry'

fi

Warunki można łączyć za pomocą operatorów logicznych:

if [ "$#" -gt 2 -a "$#" -lt 5 ]
then

echo 'Podałeś więcej niż 2 parametry'
else

echo 'Podałeś albo mniej niż 2 parametry lub więcej niż 5'
fi

Pętle

- while komenda do akcja done - while wykonuje akcję dopóki komenda ma wartość Prawda (true)
- until komenda do akcja done - until wykonuje akcję dopóki komenda ma wartość Fałsz (false)
- for zmienna in lista-wartości do akcja done - Pętla for-in zaprojektowana została do użytku z listami
wartości. Są one kolejno przyporządkowywane zmiennej
-for zmienna do akcja done - Odnosi się do argumentów skryptu przyporządkowując je kolejno zmiennej

#!/bin/bash

for plik in /home/piotr/*
do

echo "Plik lub katalog: $plik"
done

Dla każdego elementu w /home/piotr (plik lub katalog) wykonaj (do) echo :) Po kolei nazwa pliku/katalogu
przypisywana jest zmiennej $plik.

background image

#!/bin/bash
for parametr

do
echo "Plik $parametr ma hasza:"

md5sum $parametr
done

Skrypt wywołujemy: skrypt.sh plik1.txt plik2.txt - z nazwami plików jako parametry. Dla każdego pliku (w
tym przykładzie, nie muszą to być zawsze pliki) obliczamy sumę kontrolną w md5.

#!/bin/bash

powtorka = "tak"
while [ "$powtorka"==tak ]

do
echo -n $powtorka

echo 'Witaj w generatorze wizytówek v. 13.666'
echo '#####################################'

echo 'Program poprosi cię o wpisanie różnych danych.'
echo 'Po wpisaniu wciśnij Enter by przejść dalej.'

echo '#####################################'
echo 'Podaj swoje Imię i Nazwisko:'

read name
echo 'Podaj swój adres E-Mail:'

read mail
echo 'Podaj numer Gadu-Gadu:'

read gg
echo '#####################################'

echo 'Pobieranie danych zakończone'
touch $1

echo "$name" >> $1
echo "Email: $mail" >> $1

echo "Gadu-Gadu $gg" >> $1
echo 'Generowanie wizytówki zakończone'

echo "Plik $1 gotowy!"
echo '#####################################'

echo 'Wpisz "tak" jeżeli chcesz dodać kolejny wpis'
read powtorka

done


Document Outline


Wyszukiwarka

Podobne podstrony:
Bash, Pisanie skryptów w bashu
Bash Praktyczne skrypty
Bash Praktyczne skrypty
Bash Praktyczne skrypty bashps
Bash Praktyczne skrypty 2
06 pamięć proceduralna schematy, skrypty, ramyid 6150 ppt
geodezja satelitarna skrypt 2 ppt
Mój skrypt 2011
Mechanika Techniczna I Skrypt 2 4 Kinematyka
MNK skrypt
bo mój skrypt zajebiaszczy
praktyka skrypt mikrobiologia id 384986
Leki przeciwbakteryjne skrypt
Patrologia Ćwiczenia Skrypt
Mechanika Techniczna I Skrypt 4 2 4 Układ belkowy złożony

więcej podobnych podstron