OnWorks Linux ve Windows Çevrimiçi İş İstasyonları

Logo

İş İstasyonları için Çevrimiçi Ücretsiz Barındırma

<Önceki | İçerik | Sonraki>

Mantık

27. Bölümde keşfettiğimiz gibi, (( )) bileşik komut, çeşitli karşılaştırma operatörlerini destekler. Mantığı değerlendirmek için kullanılabilecek birkaç tane daha var. İşte tam liste:


Tablo 34-6: Karşılaştırma Operatörleri


Operatör Açıklaması

Operatör Açıklaması

<= Küçük veya eşit


görüntü

>= Büyüktür veya eşittir


görüntü

< Daha az


görüntü

> Daha büyük


görüntü


görüntü

== Eşittir


görüntü

!= Eşit değil


görüntü

&& Mantıksal VE


görüntü

|| mantıksal VEYA


görüntü

ifade1?ifade2:ifade3 Karşılaştırma (üçlü) operatörü. eğer ifade ifade1

sıfırdan farklı olarak değerlendirilir (aritmetik doğru) o zaman ifade2, Başka ifade3.


görüntü


Mantıksal işlemler için kullanıldığında, ifadeler aritmetik mantığın kurallarına uyar; yani sıfır olarak değerlendirilen ifadeler yanlış, sıfır olmayan ifadeler ise doğru kabul edilir. NS (( )) bileşik komut, sonuçları kabuğun normal çıkış kodlarına eşler:



[ben@linuxbox ~]$ eğer ((1)); sonra "true" yankısı; else "yanlış" yankısı; fi

gerçek

[ben@linuxbox ~]$ eğer ((0)); sonra "true" yankısı; else "yanlış" yankısı; fi

yanlış

[ben@linuxbox ~]$ eğer ((1)); sonra "true" yankısı; else "yanlış" yankısı; fi

gerçek

[ben@linuxbox ~]$ eğer ((0)); sonra "true" yankısı; else "yanlış" yankısı; fi

yanlış


Mantıksal operatörlerin en tuhafı, üçlü operatör. Bu operatör (C programlama dilindekinden sonra modellenmiştir) bağımsız bir mantıksal test gerçekleştirir. Bir tür if/then/else ifadesi olarak kullanılabilir. Üç aritmetik ifadeye etki eder (dizeler çalışmaz) ve ilk ifade doğruysa (veya sıfır değilse) ikinci ifade gerçekleştirilir. Aksi takdirde, üçüncü ifade gerçekleştirilir. Bunu komut satırında deneyebiliriz:



[ben@linuxbox ~]$ a = 0 [ben@linuxbox ~]$ ((a<1?++a:--a)) [ben@linuxbox ~]$ yankı $a

1

[ben@linuxbox ~]$ ((a<1?++a:--a))

[ben@linuxbox ~]$ yankı $a

0

[ben@linuxbox ~]$ a = 0 [ben@linuxbox ~]$ ((a<1?++a:--a)) [ben@linuxbox ~]$ yankı $a

1

[ben@linuxbox ~]$ ((a<1?++a:--a))

[ben@linuxbox ~]$ yankı $a

0


Burada üçlü bir operatörü iş başında görüyoruz. Bu örnek bir geçiş uygular. Operatör her gerçekleştirildiğinde, değişkenin değeri a sıfırdan bire veya tam tersine geçer.

Lütfen ifadeler içinde atama yapmanın kolay olmadığını unutmayın.


teşebbüs edildiğinde, darbe bir hata bildirecektir:


[ben@linuxbox ~]$ a = 0

[ben@linuxbox ~]$ ((a<1?a+=1:a-=1))

bash: ((: a<1?a+=1:a-=1: değişken olmayana atama denendi (hata belirteci "-=1")

[ben@linuxbox ~]$ a = 0

[ben@linuxbox ~]$ ((a<1?a+=1:a-=1))

bash: ((: a<1?a+=1:a-=1: değişken olmayana atama denendi (hata belirteci "-=1")


Bu sorun, atama ifadesi parantez içine alınarak azaltılabilir:



[ben@linuxbox ~]$ ((a<1?(a+=1):(a-=1)))

[ben@linuxbox ~]$ ((a<1?(a+=1):(a-=1)))


Daha sonra, basit bir sayı tablosu üreten bir komut dosyasında aritmetik operatörleri kullanmanın daha eksiksiz bir örneğini görüyoruz:



#! / Bin / bash

# aritmetik döngü: aritmetik operatörlerin bittiğini gösteren komut dosyası=0

a = 0

printf "a\ta**2\ta**3\n" printf "=\t====\t====\n"


kadar ((bitti)); b=$((a**2)) yap

c=$((a**3))

printf "%d\t%d\t%d\n" $a $b $c ((a<10?++a:(bitmiş=1)))

yapılmış

#! / Bin / bash

# aritmetik döngü: aritmetik operatörlerin bittiğini gösteren komut dosyası=0

a = 0

printf "a\ta**2\ta**3\n" printf "=\t====\t====\n"


kadar ((bitti)); b=$((a**2)) yap

c=$((a**3))

printf "%d\t%d\t%d\n" $a $b $c ((a<10?++a:(bitmiş=1)))

yapılmış


Bu komut dosyasında, değerini temel alan bir kadar döngüsü uygularız. bitmiş değişken. Başlangıçta değişken sıfıra ayarlanır (aritmetik yanlış) ve sıfır olmayana kadar döngüye devam ederiz. Döngü içinde sayaç değişkeninin karesini ve küpünü hesaplıyoruz

a. Döngünün sonunda sayaç değişkeninin değeri değerlendirilir. 10'dan (maksimum yineleme sayısı) küçükse, bir artırılır, aksi takdirde tamamlanan değişkene bir değeri verilir, bitiş aritmetik olarak doğru yapılır, böylece döngü sonlandırılır. Komut dosyasını çalıştırmak şu sonucu verir:


[ben@linuxbox ~]$ aritmetik döngüsü

[ben@linuxbox ~]$ aritmetik döngüsü


a

= 0

1

2

3

4

5

6

7

8

9

10

a

= 0

1

2

3

4

5

6

7

8

9

10


görüntü

bir**2 bir**3

========

bir**2 bir**3

========

0

1

4

9

16

25

36

49

64

81

100

0

1

4

9

16

25

36

49

64

81

100

0

1

8

27

64

125

216

343

512

729

1000

0

1

8

27

64

125

216

343

512

729

1000

OnWorks'te En İyi OS Bulut Bilişimi: