Zmienne Specjalne

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
O ile nie zaznaczono inaczej, treść tej strony objęta jest licencją Creative Commons Attribution-ShareAlike 3.0 License