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
$