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

Logo

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

<Önceki | İçerik | Sonraki>

Atama

Kullanımları hemen belli olmasa da aritmetik ifadeler atama yapabilir. Farklı bir bağlamda olsa da birçok kez atama gerçekleştirdik. Bir değişkene her değer verdiğimizde, atama gerçekleştiriyoruz. Bunu aritmetik ifadeler içinde de yapabiliriz:



[ben@linuxbox ~]$ foo=

[ben@linuxbox ~]$ yankı $foo


[ben@linuxbox ~]$ if (( foo = 5 )); ardından echo "Doğrudur."; fi

Bu doğru.

[ben@linuxbox ~]$ yankı $foo

5

[ben@linuxbox ~]$ foo=

[ben@linuxbox ~]$ yankı $foo


[ben@linuxbox ~]$ if (( foo = 5 )); ardından echo "Doğrudur."; fi

Bu doğru.

[ben@linuxbox ~]$ yankı $foo

5


Yukarıdaki örnekte ilk olarak değişkene boş bir değer atıyoruz. foo ve gerçekten boş olduğunu doğrulayın. Ardından, bir gerçekleştiriyoruz if bileşik komut ile (( fo = 5

)). Bu işlem iki ilginç şey yapar: 1) değişkene 5 değerini atar.

foo ve 2) foo'ya sıfır olmayan bir değer atandığı için true olarak değerlendirilir.


görüntü

Not: kelimenin tam anlamını hatırlamak önemlidir. = yukarıdaki ifadede. Bir tek = atama yapar. fo = 5 "yap" diyor foo 5'e eşit" iken == denkliğini değerlendirir. fo == 5 "yapıyor foo eşit 5?” Bu, birçok programlama dilinde ortak bir özelliktir. Kabukta, bu biraz kafa karıştırıcı olabilir çünkü test komut tek bir kabul eder = dizi denkliği için Daha modern olanı kullanmak için başka bir neden [[]] ve (( )) yerine bileşik komutlar test.


görüntü

Ek olarak, =, kabuk ayrıca bazı çok faydalı atamaları gerçekleştiren notasyonlar da sağlar:


Tablo 34-4: Atama Operatörleri


Notasyon Açıklama

Notasyon Açıklama


görüntü

parametre = değer Basit görev. atar değer için parametre.


görüntü

parametre += değer Ek. Eşittir parametre = parametre +

değeri.


görüntü

parametre -= değer Çıkarma. Eşittir parametre = parametre -

değeri.


görüntü

parametre *= değer Çarpma işlemi. Eşittir parametre = parametre

* değeri.


görüntü

parametre /= değer Tamsayı bölümü. Eşittir parametre =

parametre değeri.


görüntü

parametre %= değer Modül. Eşittir parametre = parametre %

değeri.


görüntü

parametre++ Değişken artış sonrası. Eşittir parametre =

parametre + 1 (ancak aşağıdaki tartışmaya bakın).


görüntü

parametre–– Değişken sonrası azalma. Eşittir parametre =

parametre − 1.


görüntü

++parametre Değişken ön artış. Eşittir parametre =

parametre + 1.


görüntü

--parametre Değişken ön azalma. Eşittir parametre =

parametre − 1.


görüntü


Bu atama operatörleri, birçok yaygın aritmetik görev için uygun bir kısayol sağlar. Özel ilgi çekici olan artış (++) ve eksiltme (-) parametrelerinin değerini birer birer artıran veya azaltan operatörler. Bu gösterim stili C programlama dilinden alınmıştır ve aşağıdakiler de dahil olmak üzere bir dizi başka programlama diline dahil edilmiştir. darbe.

Operatörler, bir parametrenin önünde veya sonunda görünebilir. Her ikisi de parametreyi birer birer artırırken veya azaltırken, iki yerleşimin ince bir farkı vardır. Parametrenin önüne yerleştirilirse, parametre döndürülmeden önce parametre artırılır (veya azaltılır). Daha sonra yerleştirilirse işlem yapılır. sonra parametre döndürülür. Bu oldukça garip, ancak amaçlanan davranış. İşte bir gösteri:



[ben@linuxbox ~]$ foo=1 [ben@linuxbox ~]$ yankı $((foo++)) 1

[ben@linuxbox ~]$ yankı $foo

[ben@linuxbox ~]$ foo=1 [ben@linuxbox ~]$ yankı $((foo++)) 1

[ben@linuxbox ~]$ yankı $foo


2

2


Değişkene bir değerini atarsak foo ve ardından ile artırın ++ parametre adından sonra yerleştirilen operatör, foo bir değeri ile döndürülür. Ancak değişkenin değerine ikinci kez bakarsak artan değeri görürüz. yerleştirirsek ++ operatörü parametrenin önüne koyarsak, daha çok beklenen davranışı elde ederiz:


[ben@linuxbox ~]$ foo=1 [ben@linuxbox ~]$ yankı $((++foo)) 2

[ben@linuxbox ~]$ yankı $foo

2

[ben@linuxbox ~]$ foo=1 [ben@linuxbox ~]$ yankı $((++foo)) 2

[ben@linuxbox ~]$ yankı $foo

2


Çoğu kabuk uygulaması için, operatörün önüne eklemek en faydalısı olacaktır.

++ ve -- operatörleri genellikle döngülerle birlikte kullanılır. Modulo betiğinizi biraz sıkılaştırmak için bazı iyileştirmeler yapacağız:



#! / Bin / bash

# modulo2: ((i = 0; i <= 20; ++ben )); yapmak

Eğer (((ben %5) == 0 )); sonra printf "<%d> " $i

başka

printf "%d" $i

bitti

printf "\ n"

#! / Bin / bash

# modulo2: ((i = 0; i <= 20; ++ben )); yapmak

Eğer (((ben %5) == 0 )); sonra printf "<%d> " $i

başka

printf "%d" $i

bitti

printf "\ n"


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