Unix / Linux - Özel Değişkenler

Bu bölümde, Unix'teki özel değişken hakkında ayrıntılı olarak tartışacağız. Önceki bölümlerimizden birinde, değişken adlarında belirli alfasayısal olmayan karakterleri kullandığımızda nasıl dikkatli olacağımızı anladık. Bunun nedeni, bu karakterlerin özel Unix değişkenlerinin adlarında kullanılmasıdır. Bu değişkenler belirli işlevler için ayrılmıştır.

Örneğin, $ karakteri, geçerli kabuğun işlem kimlik numarasını veya PID'sini temsil eder -

$echo $$

Yukarıdaki komut mevcut kabuğun PID'sini yazar -

29949

Aşağıdaki tablo, kabuk komut dosyalarınızda kullanabileceğiniz bir dizi özel değişkeni göstermektedir -

Sr.No. Değişken ve Açıklama
1

$0

Mevcut betiğin dosya adı.

2

$n

Bu değişkenler, bir komut dosyasının çağrıldığı argümanlara karşılık gelir. Burayan bir bağımsız değişkenin konumuna karşılık gelen pozitif bir ondalık sayıdır (ilk bağımsız değişken $ 1, ikinci bağımsız değişken $ 2 vb.).

3

$#

Bir betiğe sağlanan bağımsız değişkenlerin sayısı.

4

$*

Tüm argümanlar çift tırnaklıdır. Bir komut dosyası iki bağımsız değişken alırsa, $ *, $ 1 $ 2'ye eşdeğerdir.

5

$@

Tüm argümanlar tek tek çift tırnaklıdır. Bir betik iki bağımsız değişken alırsa, $ @ 1 $ 2'ye eşdeğerdir.

6

$?

Yürütülen son komutun çıkış durumu.

7

$$

Mevcut kabuğun işlem numarası. Kabuk betikleri için bu, altında yürütüldüğü işlem kimliğidir.

8

$!

Son arka plan komutunun işlem numarası.

Komut Satırı Bağımsız Değişkenleri

$ 1, $ 2, $ 3, ... $ 9 komut satırı argümanları konumsal parametrelerdir; $ 0 gerçek komuta, programa, kabuk betiğine veya işleve işaret eder ve $ 1, $ 2, $ 3, ... $ 9 komut.

Aşağıdaki komut dosyası, komut satırıyla ilgili çeşitli özel değişkenler kullanır -

#!/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 : $#"

İşte yukarıdaki komut dosyası için bir örnek çalıştırma -

$./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

Özel Parametreler $ * ve $ @

Tüm komut satırı argümanlarına aynı anda erişime izin veren özel parametreler vardır. $* ve $@ çift ​​tırnak içine alınmadıkça ikisi de aynı şekilde davranacaktır, "".

Her iki parametre de komut satırı bağımsız değişkenlerini belirtir. Ancak, "$ *" özel parametresi tüm listeyi aralarında boşluklar bulunan tek bir bağımsız değişken olarak alır ve "$ @" özel parametresi tüm listeyi alır ve ayrı bağımsız değişkenlere ayırır.

Bilinmeyen sayıda komut satırı argümanını $ * veya $ @ özel parametreleriyle işlemek için kabuk betiğini aşağıda gösterildiği gibi yazabiliriz -

#!/bin/sh

for TOKEN in $*
do
   echo $TOKEN
done

İşte yukarıdaki komut dosyası için bir örnek çalıştırma -

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

Note - Burada do...done sonraki öğreticide ele alınacak bir döngü türüdür.

Çıkış Durumu

$? değişken, önceki komutun çıkış durumunu temsil eder.

Çıkış durumu, tamamlandığında her komut tarafından döndürülen sayısal bir değerdir. Kural olarak, çoğu komut başarılı olsaydı 0, başarısız olduysa 1 çıkış durumunu döndürür.

Bazı komutlar, belirli nedenlerle ek çıkış durumları döndürür. Örneğin, bazı komutlar hata türlerini ayırt eder ve belirli hata türüne bağlı olarak çeşitli çıkış değerleri döndürür.

Başarılı komut örneği aşağıdadır -

$./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
$