Kabuk Komut Dosyasında 'Linux Değişkenlerini' Anlamak ve Yazmak - Bölüm 10


Linux kabuk betik dili her zaman gündemde olan bir konu olmuştur ve gelecekte de öyle olacaktır. Shell Komut Dosyası Dili büyülüdür ve diğer dillerde olduğu gibi komut dosyası dilinde de program yapmak çok kolaydır. Ancak ne yaptığımız ve sonucun ne olacağı konusunda derinlemesine bilgi sahibi olmayı gerektirir.

Sonuncusu “Linux Değişkenlerine Bir Bakış” da dahil olmak üzere, okuyucularımız için yazdığımız tüm kabuk komut dosyası makaleleri büyük beğeni topluyor. Son makaleyi yeni bir Düzeye genişletiyoruz.

Değişken Nitelikler

Linux Ortamındaki her Değişkenin belirli seçenekleri vardır ve bunlara 'nitelikler' denir. Bu seçenekler veya özellikler duruma göre gerektiğinde “declare” komutu kullanılarak Açık ve Kapalı hale getirilebilir.

Değişken öznitelik örneği, karşılık gelen değişken için tamsayı özniteliğini açacak olan '-i' anahtarını kullanmaktır. '-i' anahtarına sayısal olmayan bir değer iletilse bile, bir hata mesajı atmaz ve tamsayı yorumu olarak '0' çıktısını almaz. Burada aşağıdaki örnekten daha net anlaşılmaktadır.

Değişken bir Tamsayı bildirin, bill=121

avi@localhost:~$ declare -i bill=121

Değişken faturanın değerini yazdırın.

avi@localhost:~$ printf "%d\n" "$bill" 

121

Değişken değeri bir dize olsun. Bill değişkeni zaten beyan edilmiştir, ikinci kez beyan edilmesine gerek yoktur. Değişkenin değerini şu şekilde değiştirmeniz yeterlidir.

avi@localhost:~$ bill=tecmint

Şimdi tekrar bill değişkeninin değerini yazdırın.

avi@localhost:~$ printf "%d\n" "$bill" 

0

Hata mesajı yerine '0' dikkat edin.

Şimdi soru şu: Halihazırda bildirilmiş değişkenlerin nitelikleri nasıl bilinecek?
avi@localhost:~$ declare -p bill 

declare -i bill="121"

Burada bir -p (baskı anlamına gelir) anahtarı kurtarmaya gelir.

Tekrar ediyorum, bir değişkenin niteliklerini kapatmak için ne yapmalıyım?

Bir değişkenin özelliklerini Kapatmak için ihtiyacımız olan şey, anahtarın hemen önüne + (artı) işaretini koymaktır. Burada aşağıdaki örnekten daha net anlaşılmaktadır.

Yukarıdaki değişkenin tamsayı özelliğini Kapatın.

avi@localhost:~$ declare +i bill

Değişkenin değerini kontrol edin.

avi@localhost:~$ printf "%d\n" "$bill" 

bash: printf: bill: invalid number
0

Şimdi anahtar dizesini kullanarak değişkenin değerini yazdırın.

avi@localhost:~$ printf "%s\n" "$bill" 

tecmint

Yukarıdaki örnekte bash sayısal olmayan bir değeri hata olarak değerlendirememiştir, ancak printf neyin sayı olabileceğini ve neyin olamayacağını yorumlamaktadır.

Salt Okunur Değişkenler

Salt Okunur Bellek'i (ROM) duymuş olabilirsiniz, ancak Salt Okunur Değişken nedir? ROM'la benzerliği var mı?

Salt Okunur Bellek gibi Salt Okunur Değişkenler, atandıktan sonra değeri değiştirilemeyen bir şeydir. Bu nedenle Salt Okunur olarak adlandırılır. Bu değişken için yeni bir değer yazamaz, düzenleyemez veya değiştiremezsiniz. İşte örnek kullanan bir illüstrasyon.

Değeri “linux-console.net ” olan, salt okunur (-r) bir değişken adı çıkarın.

avi@localhost:~$ declare -r name="linux-console.net"

Yukarıda bildirilen değişkenin değerini yazdırın.

avi@localhost:~$ printf "%s\n" "$name" 

linux-console.net

Değişkenin değerini değiştirmeyi deneyin.

avi@localhost:~$ declare -r name="Avishek" 

bash: declare: name: readonly variable

Yukarıda tartışıldığı gibi salt okunur bir Değişkenin nitelikleri '+' işareti kullanılarak değiştirilebilir.

Linux'ta Değişkenleri Dışa Aktarma

Bir kabuk betiğinde bildirilen tüm kabuk değişkenleri, betik çalışana kadar kullanılabilir. Betiğin dışında betiğin değişkeni mevcut değil. Değişkenleri betiğin dışında kullanılabilir hale getirme sürecine değişkenleri dışa aktarma adı verilir.

Bir Değişken, kabuğun dışa aktarmak istediğiniz şeyi onaylayan declare -x (dışa aktarma) anahtarı kullanılarak kabuğun dışına aktarılabilir. Bir beyan verme anahtarı olarak kullanılabilir.

avi@localhost:~$ declare -x variable=”Constant_Value”

Betik çalışırken değişkende yapılan tüm değişiklikler, değişken betiğin dışına aktarıldığında kaybolur. Kabuk komut dosyası oluşturmada değişkeni dışa aktarmak çok önemlidir.

Salt okunur olması gereken ve betiğin dışında da kullanılabilen bir değişkene sahip olmak istiyoruz, -r anahtarını ve -x anahtarını aynı anda kullanmamız gerekiyor.

avi@localhost:~$ declare -rx variable=”Constant_Value”

Ortam Değişkenleri

Program ile onları çalıştıran program arasında paylaşılan değişkenler. Ortam değişkenleri dışa aktarılabilir ancak nitelikler buna atanamaz.

Yukarıdaki teoriyi pratik olarak anlamak. Burada 0.sh ve 1.sh adlı iki komut dosyamız var.

0.sh
#!/bin/bash 
declare -rx name=Tecmint 
bash 0.sh 
exit 0

Ve ikinci senaryo.

1.sh
#!/bin/bash 
printf "%s\n" "$name" 
name=linux-console.net 
printf "%s\n" "$name"
exit 0

Burada olan şu; bir değişken (isim) salt okunur olarak bildirilir ve dışa aktarılır ve hemen ardından ikinci komut dosyası çağrılır.

İkinci komut dosyası, ilk printf ifadesinde dışa aktarılan ilk komut dosyasındaki değişkeni yazdırdı. İkinci printf deyiminde 'isim' değişkenine atanan yeni değeri gösterir.

Değişkenin salt okunur olduğundan endişelenmenize gerek yok, nasıl yeniden atanabilir. Hatırlamıyor musunuz: “Script çalışırken değişkende yapılan tüm değişiklikler, değişken script dışına aktarıldığında kaybolur. ”

Referanslar

declare komutu aşağıdaki tüm anahtarlara kombinasyonlarıyla birlikte izin verir.

  1. -a : Bir dizi bildirir.
  2. -f : Görüntüleme İşlevi ve Tanımı.
  3. -F : İşlev Adını Görüntüle.
  4. -r : Değişkeni salt okunur olarak bildirin.
  5. -x : Değişkeni Dışa Aktarılabilir olarak bildirin.
  6. -I : Değişkeni Tamsayı olarak bildirin.

Şimdilik bu kadar. Bir sonraki makalede, bu konuyu kapatmadan önce 'eval' komutunu kullanarak değişkenleri değiştirmenin yollarını ve bash'ta önceden tanımlanmış değişkenleri tartışacağız. Umarım siz insanlar, derinlemesine senaryo yazma yolculuğunuzdan keyif alıyorsunuzdur. O zamana kadar linux-console.net'u takip etmeye ve bağlantıda kalmaya devam edin.