Unix / Linux - zmienne specjalne

W tym rozdziale omówimy szczegółowo zmienną specjalną w systemie Unix. W jednym z naszych poprzednich rozdziałów zrozumieliśmy, jak zachować ostrożność, używając pewnych znaków niealfanumerycznych w nazwach zmiennych. Dzieje się tak, ponieważ te znaki są używane w nazwach specjalnych zmiennych uniksowych. Te zmienne są zarezerwowane dla określonych funkcji.

Na przykład $ znak reprezentuje numer identyfikacyjny procesu lub PID bieżącej powłoki -

$echo $$

Powyższe polecenie zapisuje PID bieżącej powłoki -

29949

W poniższej tabeli przedstawiono kilka specjalnych zmiennych, których można używać w skryptach powłoki -

Sr.No. Zmienna i opis
1

$0

Nazwa pliku bieżącego skryptu.

2

$n

Te zmienne odpowiadają argumentom, za pomocą których został wywołany skrypt. Tutajn jest dodatnią liczbą dziesiętną odpowiadającą pozycji argumentu (pierwszy argument to $ 1, drugi to $ 2 itd.).

3

$#

Liczba argumentów dostarczonych do skryptu.

4

$*

Wszystkie argumenty są w cudzysłowie. Jeśli skrypt otrzymuje dwa argumenty, $ * odpowiada 1 $ 2 $.

5

$@

Wszystkie argumenty są osobno cudzysłowami. Jeśli skrypt otrzymuje dwa argumenty, $ @ jest równoważne 1 $ 2 $.

6

$?

Status wyjścia ostatniego wykonanego polecenia.

7

$$

Numer procesu bieżącej powłoki. W przypadku skryptów powłoki jest to identyfikator procesu, pod którym są wykonywane.

8

$!

Numer procesu ostatniego polecenia w tle.

Argumenty wiersza polecenia

Argumenty wiersza poleceń $ 1, $ 2, $ 3, ... $ 9 są parametrami pozycyjnymi, przy czym $ 0 wskazuje rzeczywiste polecenie, program, skrypt powłoki lub funkcję, a $ 1, $ 2, $ 3, ... $ 9 jako argumenty funkcji Komenda.

Poniższy skrypt używa różnych specjalnych zmiennych związanych z wierszem poleceń -

#!/bin/sh

echo "File Name: $0"
echo "First Parameter : $1"
echo "Second Parameter : $2"
echo "Quoted Values: $@"
echo "Quoted Values: $*"
echo "Total Number of Parameters : $#"

Oto przykładowe uruchomienie powyższego skryptu -

$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2

Parametry specjalne $ * i $ @

Istnieją specjalne parametry, które umożliwiają dostęp do wszystkich argumentów wiersza poleceń jednocześnie. $* i $@ oba będą działać tak samo, chyba że zostaną ujęte w podwójne cudzysłowy, "".

Oba parametry określają argumenty wiersza polecenia. Jednak specjalny parametr „$ *” przyjmuje całą listę jako jeden argument ze spacjami między, a specjalny parametr „$ @” pobiera całą listę i rozdziela ją na oddzielne argumenty.

Możemy napisać skrypt powłoki, jak pokazano poniżej, aby przetworzyć nieznaną liczbę argumentów wiersza poleceń z parametrami specjalnymi $ * lub $ @ -

#!/bin/sh

for TOKEN in $*
do
   echo $TOKEN
done

Oto przykładowe uruchomienie powyższego skryptu -

$./test.sh Zara Ali 10 Years Old
Zara
Ali
10
Years
Old

Note - Tutaj do...done jest rodzajem pętli, która zostanie omówiona w kolejnym samouczku.

Status wyjścia

Plik $? zmienna reprezentuje stan wyjścia poprzedniego polecenia.

Status wyjścia to wartość liczbowa zwracana przez każde polecenie po jego zakończeniu. Z reguły większość poleceń zwraca kod zakończenia równy 0, jeśli zakończyły się powodzeniem, i 1, jeśli się nie powiodło.

Niektóre polecenia zwracają dodatkowe statusy wyjścia z określonych powodów. Na przykład niektóre polecenia rozróżniają rodzaje błędów i zwracają różne wartości wyjścia w zależności od określonego typu błędu.

Oto przykład udanego polecenia -

$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2
$echo $?
0
$