Bash Komut Dosyası İçinde Test Koşullarını Kullanma

Test komutu, bir elemanın diğerine göre karşılaştırılması için Linux komut satırında kullanılabilir, ancak mantık ve program akışını kontrol eden koşullu ifadelerin bir parçası olarak BASH kabuk betiklerinde daha yaygın olarak kullanılır.

Temel Bir Örnek

Bu komutları sadece bir terminal penceresi açarak deneyebilirsiniz.

test 1 -eq 2 && echo "evet" || echo "no"

Yukarıdaki komut aşağıdaki gibi ayrılabilir:

Özünde, komut 1 ile 2'yi karşılaştırıyor ve "evet" ifadesini içeren yankılanan "evet" ifadesiyle eşleşiyorlar ve "hayır" ifadesiyle eşleşmiyorsa "hayır" ifadesiyle eşleşmiyorlar.

Sayıların Karşılaştırılması

Sayı olarak ayrıştırılan öğeleri karşılaştırıyorsanız, aşağıdaki karşılaştırma işleçlerini kullanabilirsiniz:

Örnekler:

test 1 -eq 2 && echo "evet" || echo "no"

(1'e eşit değil çünkü ekrana "hayır" görüntüler)

test 1 -ge 2 && echo "evet" || echo "no"

(1'e büyük veya 2'ye eşit olmadığı için ekrana "hayır" mesajını görüntüler.)

test 1 -gt 2 && echo "evet" || echo "no"

(1, 2'den büyük olmadığı için ekrana "hayır" gösterir)

test 1 -le 2 && echo "evet" || echo "no"

(1'e eşit veya 2'ye eşit olduğu için ekrana "evet" mesajını görüntüler)

test 1 -lt 2 && echo "evet" || echo "no"

(1'e eşit veya 2'ye eşit olduğu için ekrana "evet" mesajını görüntüler)

test 1 -ne 2 && echo "evet" || echo "no"

(1'e eşit değil çünkü ekrana "evet" görüntüler)

Metin Karşılaştırma

Dizeler olarak ayrıştırılan öğeleri karşılaştırıyorsanız, aşağıdaki karşılaştırma işleçlerini kullanabilirsiniz:

Örnekler:

"string1" = "string2" ve & echo "yes" ifadelerini test edin || echo "no"

("string1", "string2" değerine eşit olmadığından) ekrana "no" görüntüler.

test "string1"! = "string2" && echo "yes" || echo "no"

("string1", "string2" ile eşit olmadığı için) ekrana "yes" (evet) gösterir.)

test -n "string1" && echo "evet" || echo "no"

("string1" sıfırdan büyük bir dize uzunluğuna sahip olduğundan) ekrana "yes" (evet) gösterir.)

test -z "string1" && echo "evet" || echo "no"

("string1", sıfırdan büyük bir dize uzunluğuna sahip olduğundan) ekrana "no" görüntüler.

Dosyaları Karşılaştırma

Dosyaları karşılaştırıyorsanız, aşağıdaki karşılaştırma operatörlerini kullanabilirsiniz:

Örnekler:

/ path / to / file1 -n / path / to / file2 && echo "yes"

(Dosya1 dosya2'den daha yeni ise, "evet" sözcüğü görüntülenir)

-e / yol / to / dosya1 && echo "evet"

(eğer dosya1 varsa "evet" sözcüğü görüntülenir)

-O / path / to / file1 && echo "yes" ifadesini test edin

(eğer dosya1'e sahipseniz, o zaman "evet" sözcüğü görüntülenir)

terminoloji

Çoklu Koşulların Karşılaştırılması

Şimdiye kadar her şey bir şeyi diğerine karşı karşılaştırıyor, ama eğer iki koşulu karşılaştırmak isterseniz.

Örneğin, bir hayvanın 4 bacağı varsa ve "moo" yerse, muhtemelen bir ineğdir. Sadece 4 bacağın kontrol edilmesi, bir ineğinizin olduğunu garanti etmez, ancak yaptığınız sesi kesinlikle kontrol eder.

Her iki koşulu bir kerede test etmek için aşağıdaki ifadeyi kullanın:

test 4 -eq 4 -a "moo" = "moo" && echo "bu bir inek" || echo "bu bir inek değil"

Buradaki anahtar bölüm -a bunun anlamıdır.

Aynı testi gerçekleştirmenin daha iyi ve yaygın olarak kullanılan bir yolu vardır ve aşağıdaki gibidir:

test 4 -eq 4 && "test" moo "=" moo "&& echo" bir inek "|| echo "bu bir inek değil"

Yapmak isteyebileceğiniz başka bir test, iki ifadeyi karşılaştırmaktır ve eğer doğruysa bir dizge çıktıysa. Örneğin, "file1.txt" isimli bir dosyanın mevcut olduğunu veya "file1.doc" adlı bir dosyanın mevcut olduğunu kontrol etmek isterseniz, aşağıdaki komutu kullanabilirsiniz.

test -e file1.txt -o -e dosya1.doc && echo "dosya1 var" || echo "dosya1 mevcut değil"

Buradaki anahtar kısım, -o anlamına geliyor ya da.

Aynı testi gerçekleştirmenin daha iyi ve yaygın olarak kullanılan bir yolu vardır ve aşağıdaki gibidir:

test -e dosya1.txt || test -e file1.doc && echo "dosya1 var" || echo "dosya1 mevcut değil"

Test Anahtar Kelimesini Ortadan Kaldırma

Karşılaştırmayı gerçekleştirmek için kelime testini kullanmanız gerekmez. Yapmanız gereken tek şey, aşağıdaki gibi köşeli parantez içinde ifadeyi kapsar:

[-e file1.txt] && echo "dosya1 var" "|| echo "dosya1 mevcut değil"

[Ve] temel olarak test ile aynı anlama gelir.

Şimdi biliyorsunuz, aşağıdaki gibi çoklu koşulları karşılaştırırken geliştirebilirsiniz:

[4 -eq 4] && ["moo" = "moo"] && echo "bir inek" || echo "bu bir inek değil"

[-e dosya1.txt] || [-e file1.doc] && echo "dosya1 var" "|| echo "dosya1 mevcut değil"

özet

Test komutu komut dosyalarında daha kullanışlıdır çünkü bir değişkenin değerini diğerine karşı kontrol edebilir ve program akışını kontrol edebilirsiniz. Standart komut satırında, bir dosyanın var olup olmadığını sınamak için kullanabilirsiniz.