Podstawy

Czym jest skrypt powłoki

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).

Hello world

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

Wskazówka:

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.

Wskazówka2:

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).

O ile nie zaznaczono inaczej, treść tej strony objęta jest licencją Creative Commons Attribution-ShareAlike 3.0 License