Linux'ta İç İçe Değişken Değiştirme ve Önceden Tanımlanmış BASH Değişkenleri - Bölüm 11


Değişkenleri detaylı bir şekilde ele aldığımız BASH Shell ile ilgili son iki makalemiz okuyucularımız tarafından oldukça beğenildi. Biz Tecmint Ekibi olarak size en son, güncel ve ilgili konuları ayrıntılı olarak sunmak konusunda çok istekliyiz. Üstelik her zaman ilgili konuların ana perspektiflerine dokunmaya çalışıyoruz.

Bu konuyu kapatmadan önce değişkenlerin değiştirilmesini ve Shell'de tanımlanan değişkenleri göreceğimiz Linux Değişkenleri ile ilgili son makale.

Bash, komut gerçekten yürütülmeden önce değişken değişimini gerçekleştirir. Linux Bash Shell, komutu çalıştırmadan önce tüm '$' işaretini arar ve onu değişkenin değeriyle değiştirir. Bash Değişkeni değiştirme işlemi yalnızca bir kez gerçekleştirilir. Peki ya iç içe geçmiş değişkenlerimiz varsa?

Not: Yuvalanmış değişken derken, değişkenin içinde bildirilen değişkeni kastediyoruz. Yukarıdaki senaryoyu aşağıdaki örnekte görelim.

Aşağıdaki gibi Salt Okunur ve Çalıştırılabilir bir değişken bildirin.

avi@localhost:~$ declare -rx Linux_best_website="linux-console.net"

Saklanan değişkenin değerini kontrol edin.

avi@localhost:~$ printf "%s" "$Linux_best_website" 

linux-console.net

Şimdi yine Salt Okunur ve Çalıştırılabilir olan başka bir değişken bildirin.

avi@localhost:~$ declare -rx Linux_website="Linux_best_website"

Şimdi durum şu ki, iki değişken tanımladık.

Değeri “linux-console.net” olan ‘Linux_best_website’
ve değeri “Linux_best_website” olan 'Linux_website'

Aşağıdaki tek satırlık komutu çalıştırırsak sonuç ne olur?

avi@localhost:~$ printf "%s" "$Linux_website"

Öncelikle '$Linux_website' değişkenini “Linux_best_website” değeriyle değiştirmelidir ve ardından “$Linux_best_website” yine değeri olan bir değişkendir. yani “linux-console.net”. Yani aşağıdaki komutu çalıştırmanın son çıktısı olmalıdır.

avi@localhost:~$ printf "%s" "$Linux_website" 

linux-console.net

Ancak maalesef durum bu değil, aldığımız çıktı Linux_best_website oluyor.

Sebep? Evet! Bash, değişkenin değerini yalnızca bir kez değiştirir. Değişkenleri sık sık değiştirmemiz gereken ve değişkeni birden fazla kez değiştirmemiz gereken karmaşık komut dosyaları ve programlara ne dersiniz?

Burada, bir komut dosyasında birden fazla kez ek değişken değiştirme işi gerçekleştiren 'eval' komutu geliyor. İşte tüm işleyişi cam gibi netleştirecek bir örnek.

Değeri 10 olan bir x değişkeni bildirin.

avi@localhost:~/Desktop$ declare x=10

Az önce tanımladığımız x değişkeninin değerini kontrol edin.

avi@localhost:~/Desktop$ echo $yx

x10

Değeri x olan bir y değişkeni bildirin.

avi@localhost:~/Desktop$ declare y=x

Az önce tanımladığımız y değişkeninin değerini kontrol edin.

avi@localhost:~/Desktop$ echo $y 

x

Burada, fazladan bir değişken değişimi gerçekleştirmeyen BASH tek seferlik değişken değişimi sorunu var. Bunu düzeltmek için 'eval' komutunu kullanıyoruz.

avi@localhost:~/Desktop$ eval y=$x

Şimdi 'y' değişkeninin Değerini kontrol edin.

avi@localhost:~/Desktop$ echo $y 

10

Yaşasın! Sorun düzeltildi ve yarışı 'eval' komutu kazandı :)

'eval' komutunun büyük komut dosyası programlarında çok yararlı ve çok kullanışlı bir araç olduğundan bahsetmiyorum bile.

Bu yazının sonuncusu ama en önemlisi BASH'in önceden tanımlı değişkenleridir. HAYIR! Bu listeyi görünce paniğe kapılmayın. Senaryo yazmaya başlamadan önce birkaç tanesi dışında listenin tamamını hatırlamanıza gerek kalmaz. Öğrenme sürecinin bir parçası olarak BASH'in önceden tanımlanmış değişken Listesini sunuyoruz.

No. BASH VARIABLE RESULT
1 auto_resume Process command completion for the stopped jobs.
2 BASH PATH of the shell.
3 BASH_ENV Shows the name of the profile file
4 BASH_VERSION Shows the version of Bash
5 BASH_VERSINFO Shows Detailed version information.
6 BASH_VERSINFO[0] The major version number (the release).
7 BASH_VERSINFO[1] The minor version number (the version).
8 BASH_VERSINFO[2] The patch level.
9 BASH_VERSINFO[3] The build version.
10 BASH_VERSINFO[4] The release status (for example, beta1 ).
11 BASH_VERSINFO[5] The value of MACHTYPE .
12 CDPATH List of directories separated by colon.
13 COLUMNS Number of Characters per line on Standard Output.
14 EUID User ID of the current user.
15 FCEDIT The default text editor for the fc command.
16 FUNCNAME The name of the fun
17 GROUPS Groups of which the user is a Member.
18 HISTFILE The file containing the command history.
19 HOME The name of your home directory.
20 LINES Number of horizontal lines on Standard Output.
21 MAIL Name of a file to check for incoming mail
22 OSTYPE Name of the operating system.
23 OLDPWD The previous working directory
24 PWD The current working directory
25 RANDOM Prints a random number
26 SHELL The preferred shell to use
27 TIMEFORMAT The format for the time command.
28 UID The ID of the current user

Önceden Tanımlanmış BASH Değişkeninin çok büyük bir listesi var. En sık kullanılanların bir listesini oluşturmaya çalıştık.

Şimdilik bu kadar. Yine ilginç bir yazıyla karşınızda olacağım. O zamana kadar bizi izlemeye devam edin ve TecMint'e bağlı kalın. Aşağıdaki yorum bölümünde bize değerli geri bildirimlerinizi iletmeyi unutmayın.