niedziela, 15 lutego 2015

Kurs Bash cz.1

1. Wstęp

Bourne Again Shell (bash) - jest to jedna z wielu powłok występujęcych w systemach uniksowych. Wywodzi się od powłoki Bourne'a sh, która była jedną z pierwszych i najważniejszych powłok systemu Unix oraz zawiera pomysły zawarte w powłokach ksh i csh. Poza tym bash jest również językiem skryptowym.

2. Pierwszy skrypt

Tworzymy nowy plik np. hello.sh a potem nadajemy mu uprawnienia do wykonywania (uruchamiania).

chmod +x hello.sh

W tym pliku wpisujemy kod skryptu np.:

#!/bin/bash
#To jest komentarz
echo "Hello World"

Wykonanie skryptu:

./hello.sh

3. Polecenie echo

Polecenie echo wyświetla napis lub zmienną na ekranie.

Przykłady:

echo "Hello World"
echo "$ZMIENNA"
echo -e "Hello World \n"

Parametr -e umożliwia stosowanie znaków specjalnych np.:

\b - backspace
\n - nowa linia
\t - tabulacja pozioma
\xnn - znak ASCII o wartości szesnastkowej
\unnnn - znak Unicode o wartości szesnastkowej

unicode-table.com - tabela znaków Unicode.

4. Zmienne

Zmienne w bashu mogą być typu tekstowego lub liczbowego, ale też mogą służyć do cytowania poleceń. Myślę, że najlepiej typy zmiennych pokaże nam poniższy przykład.

#!/bin/bash

#zmienne lancuchowe
S1="Zmienna tekstowa (lancuch znakow)"
echo $S1
S2='To tez jest lancuch znakow'
echo $S2

#cytowanie polecen
C=`uname -a`
echo $C

#liczba
X=31
echo $X

W bashu istnieją także zmienne specjalne:

$0 - nazwa naszego skryptu
$# - liczba przekazanych parametrów
$$ - numer indentyfikacjny procesu skryptu (PID)
$* - lista porozdzielanych parametrów
$@ - lista parametrów z którymi został uruchomiony skrypt
$? - kod ostatniego wykonywalnego polecenia
$1,$2,$3,... - poszczególne parametry


Można też używać zmiennych środowiskowych (printenv) np. $HOME, $USER, $SHELL i wielu innych.

Zmienne tablicowe są to takie zmienne, które przechowują listę określonych wartości. W bashu stosujemy tablice jednowymiarowe. Zmienne tablicowe indeksujemy liczbami całkowitymi zaczynając od 0. Poniżej prosty przykład.

#!/bin/bash
TAB=(Alpha Beta Gamma Delta)
echo ${TAB[0]}
echo ${TAB[1]}
echo ${TAB[2]}
echo ${TAB[3]}

Mamy też podział zmiennych na globalne i lokalne. Zmienne globalne są dostępne w obrębie całego skryptu. We wszystkich powyższych przykładach mieliśmy do czynienia ze zmiennymi globalnymi. Zmienne lokalne działają tylko w obrębie danej funkcji. Poprzedzone są słowem kluczowym local. Poniżej przykład pokazujący różnicę między globalnymi i lokalnymi zmiennymi.

#!/bin/bash
ZMIENNA="zmienna globalna"

function fun1 {
  local ZMIENNA="zmienna lokalna"
  echo $ZMIENNA
}

echo $ZMIENNA
fun1
echo $ZMIENNA

Wynik działania tego skryptu:

zmienna globalna
zmienna lokalna
zmienna globalna

5. Polecenie read - wprowadzanie danych

Polecenie read służy do wprowadzania danych przez użytkownika. Mogą to być wartości tekstowe lub liczbowe. Poniżej prezentuję skrypt operujący na wejściowych danych tekstowych oraz liczbowych.

#!/bin/bash

echo -en "Podaj swoje imie: "
read IMIE
echo "Witaj $IMIE"

echo -en "Podaj liczbe X: "
read X
echo -en "Podaj liczbe Y: "
read Y
let Z=X*Y
echo "$X * $Y = $Z"

Koniec części pierwszej, cdn.

Brak komentarzy:

Prześlij komentarz