BASH için Yeni Başlayanlar Kılavuzu - Şeyleri Karşılaştırma

01/08

BASH için Yeni Başlayanlar Kılavuzu - Şeyleri Karşılaştırma

BASH Eğitimi - Dizeleri Karşılaştırma.

BASH öğreticisinin önceki bölümünde koşullu ifadelere baktık.

Bu rehber çok uzun oldu ama gerçekten sadece mantığın akışını nasıl kontrol edeceğimi gösterdim. Bu kılavuz, değişkenleri karşılaştırabileceğiniz farklı yolları gösterir.

Yukarıdaki görüntü bu haftaki kılavuzdaki ilk örneği göstermektedir:

#! / bin / bash

isim1 = "Gary"
isim2 = "bob"

["$ name1" = "$ name2"] ise
sonra
echo "isimler eşleşiyor"
Başka
echo "isimler eşleşmiyor"
fi


Yukarıdaki betikte, name1 ve name2 adında iki değişken tanımladık ve onlara "gary" ve "bob" değerlerini atadım. Değişkenler tırnak işaretleri arasında yer aldığından, öğretici devam ettikçe daha alakalı hale gelen dize değişkenleri olarak adlandırılır.

Tüm betik, $ name1 ve $ name2 değerlerini karşılaştırır ve "ad eşleşmesi" dizesiyle eşleşirse ve "adlar eşleşmez" dizesini çıkarmazsa karşılaştırır.

$ Name1 ve $ name2 değişkenleri etrafında tırnak işaretleri önemlidir, çünkü bunlardan herhangi birinin değeri ayarlanmamışsa, betik hala çalışır.

Örneğin, $ name1 asla ayarlanmadıysa, "" ile "" bob "karşılaştırması yapardınız. Tırnak işaretleri olmadan, açıkça başarısız olan = "bob" ile kalırdınız.

Aşağıdaki gibi eşit olmayan tanımlamak için! = Notasyonunu da kullanabilirsiniz:

["$ name1"! = "$ name2"] ise

02/08

BASH için Yeni Başlayanlar Kılavuzu - Dizeleri Karşılaştırma

BASH Eğitimi - Dizeleri Karşılaştırma.

Yukarıdaki örnekte, test aynı iki dizeyi karşılaştırır ve soru, gary alfabede bob'dan önce gelip gelmediğini sorar.

Açıkçası cevap hayır.

Komut, operatörden daha azını sunar (<). Operatörden daha az yönlendirme için de kullanıldıkça, yukarıdaki betikte "$ name1" \ <"$ name2" yi karşılaştırdığımdan daha azını ifade etmesi için bir eğik çizgi (\) ile kaçmanız gerekir.

Daha azının zıttı açıkça daha büyüktür. \ kullanmak yerine.

Örneğin

["$ name1" \> "$ name2"] ise

03/08

BASH için Yeni Başlayanlar Kılavuzu - Dizeleri Karşılaştırma

BASH Eğitimi - Dizeleri Karşılaştırma.

Bir değişkenin bir değere sahip olup olmadığını test etmek isterseniz, aşağıdaki testi kullanabilirsiniz:

eğer [-n $ ad2]

Yukarıdaki betikte, $ name2'ye bir değer verilip verilmediğini test ettim ve eğer "Bob yok, hiçbir zaman bir bob olmadı" mesajı vermedi.

04/08

BASH için Yeni Başlayanlar Kılavuzu - Dizeleri Karşılaştırma

BASH Eğitimi - Dizeleri Karşılaştırma.

Geçmiş slaytta, bir değişkenin ayarlanıp ayarlanmadığını ele aldık. Bazen bir değişken belirlenmiş olabilir, ancak aslında bir değeri olmayabilir.

Örneğin:

name1 = ""

Bir değişkenin bir değere sahip olup olmadığını (yani sıfır uzunluğunun) test etmek için aşağıdaki gibi -z kullanın:

eğer [-z $ ad1]

Yukarıdaki betikte $ name1 değerini sıfır uzunluk dizesine ayarladıktan sonra -z ile karşılaştırdım. Eğer $ name1 sıfır uzunluğunda ise "gary akşam için dışarı çıktı" mesajı görüntülenecektir.

05/08

BASH için Yeni Başlayanlar Kılavuzu - Sayıları Karşılaştırma

BASH Eğitimi - Sayıları Karşılaştırma.

Şimdiye kadar tüm karşılaştırmalar dizgiler içindi. Sayıları karşılaştırmaktan ne haber?

Yukarıdaki betik iki sayıyı karşılaştırmanın bir örneğini göstermektedir:

#! / bin / bash

a = 4
b = 5

eğer [$ a = $ b]
sonra
echo "4 = 5"
Başka
echo "4 eşit değil 5"
fi

Bir sayıyı bir sayı olarak ayarlamak için, tırnak işareti olmadan ayarlayın. Daha sonra sayıları eşittir işareti ile karşılaştırabilirsiniz.

Ancak iki numarayı karşılaştırmak için aşağıdaki operatörü kullanmayı tercih ediyorum:

Eğer [$ a -eq $ b]

06/08

BASH için Yeni Başlayanlar Kılavuzu - Sayıları Karşılaştırma

BASH Eğitimi - Sayıları Karşılaştırma.

Bir sayının başka bir sayıdan az olup olmadığını karşılaştırmak isterseniz, operatörden (<) daha azını kullanabilirsiniz. Dizelerle olduğu gibi, bir eğik çizgi ile operatörden daha az kaçmak zorundasınız. (\ <).

Sayıları karşılaştırmanın daha iyi bir yolu, aşağıdaki notasyonu kullanmaktır:

Örneğin:

eğer [$ a -lt $ b]

eğer [$ a -le $ b]

eğer [$ a -ge $ b]

eğer [$ a -gt $ b]

07/08

BASH için Yeni Başlayanlar Kılavuzu - Sayıları Karşılaştırma

BASH Eğitimi - Sayıları Karşılaştırma.

Son olarak, bu kılavuz için, eğer iki sayının farklı olup olmadığını test etmek isterseniz, ya daha küçük ve daha büyük olan operatörleri birlikte kullanabilirsiniz (<>) veya -ne aşağıdaki gibi olsun:

eğer [$ a <> $ b]

eğer [$ a -ne $ b]

08/08

BASH için Yeni Başlayanlar Kılavuzu - Karşılaştırma Operatörleri - Özet

Bu rehberin ilk üç bölümünü kaçırdıysanız, aşağıdaki linklere tıklayarak bunları bulabilirsiniz:

Rehberin sonraki bölümünde aritmetik ele alacağım.