Zmienne specjalne (ang. special variables, special parameters)
To najbardziej prywatne zmienne powłoki, są udostępniane użytkownikowi tylko do odczytu (są wyjątki). Kilka przykładów:
$0
- nazwa bieżącego skryptu lub powłoki$1..$9
- Parametry przekazywane do skryptu (wyjątek, użytkownik może modyfikować ten rodzaj $-ych specjalnych.$#
- Zawiera liczbę argumentów przekazanych w linii poleceń.$_
- Ścieżka z jaką został wywołany skrypt (powłoka)
Przykład:
#!/bin/bash
echo "Zostałem wysołany jako: $_"
Efekt wykonania:
bash$ ./skrypt.sh
Zostalem wywolany jako ./skrypt.sh
bash$ bash skrypt.sh
Zostalem wywolany jako /bin/bash
* ``$@`` - Pokaże wszystkie parametry przekzywane do skryptu (też wyjątek), równoważne $1 $2 $3..., jeśli nie podane są żadne parametry $@ interpretowana jest jako **nic**.
Przykład:
#!/bin/bash
echo "Skrypt uruchomiono z parametrami: $@"
A teraz wywołaj ten skrypt z jakimiś parametrami, mogą być brane z powietrza np.:
./plik -a d
Efekt będzie wyglądał następująco:
Skrypt uruchomiono z paramertami -a d
$?
- kod powrotu ostanio wykonywanego polecenia (0 jeśli polecenie wykonało się poprawnie, innawartość jeśli błędnie).bash$ touch plik
bash$ cat plik
Po sprawdzeniu wartości zmiennej $? uzyskujemy
bash$ echo $?
0
Ponieważ polecenie cat się udało, zmienna statusu zawiera 0. Teraz spróbujmy wykonać to polecenie na nie istniejącym pliku:
bash$ cat niematakiegopliku.txt
bash$ echo $?
1
Wartość 1 pokazuje, że powyższe polecenie się nie powiodło.
$$
- PID procesu bieżącej powłoki