Skrypt powłoki to niekompilowany plik tekstowy mogacy posiadać prawa wykonywalności, zawierający polecenia systemowe oraz polecenia sterujące jego wykonaniem (instrukcje, pętle itp.).
Wykonywany jest tylko i wyłącznie przez interpreter (tutaj /bin/bash
), który wykonuje polecenia zawarte w skrypcie (mozna w dużym uproszczeniu powiedzieć, że tłumaczy je na język procesora).
Każdy dobry kurs zaczyna się od przykładu Hello World
nie inaczej, będzie w tym prypadku, posłuzy nam on by poznać strukturę skryptu powłoki.
# Tworzymy pusty plik//
touch helloworld.sh
Następnie edytujemy go dowolnym edytorem tekstowym (mcedit, pico, nano, vim, emacs itp) wpisując do niego nastepującą zawartość:
#!/bin/bash
#
# Hello world example
#
echo "Hello world"
Pierwsza linia skryptu (nazywana shebang
) - zaczynająca się od znaków: #!
choć wygląda jak komentarz, nie jest nim - ma szczególne znaczenie - wskazuje na interpreter który powinien zostać użyty do wykonania skryptu, ścieżka do niego musi być podana w postaci bezwzględnej (nie można użyć dajmy na to samego bash) i musi się znajdować w pierwszej linii skryptu, bez żadnych poprzedzających odstępów. Tutaj skrypt zawsze będzie wykonywany przez interpreter poleceń /bin/bash
, niezależnie od tego jakiego rodzaju powłoki w danej chwili używamy.
Znak # (hasz) oznacza komentarz, wszystko co znajduje się za nim w tej samej linii, jest pomijane przez interpreter.
Jedyne co nam pozostaje to nadać prawa wykonywalności skryptowi i uruchmomić go:
chmod 711 helloworld.sh
./helloworld.sh
Podpowiedź
Nie trzeba za każdym razem wpisywać pełnej nazwy skryptu - starczy wpisać parę początkowych liter i nacisnąć tabulator, a Bash uzupełni brakujące litery - jeśli plik istnieje.
Podpowiedź
Pierwsza linia skryptu nie jest obowiązkowa większość interpetrów zezwala na użycie składni:
/bin/bash nazwa_skrytpu_do_wykonania
Niemniej jednak gorąco zachęcam do używania shebang
, ponieważ w systemach Unixowych rozszerzenie pliku nie ma większego znaczenia (to nie to co w Windows).