Merhaba arkadaşlar. Linux Shell Script Geliştirmek diye başladığım yazı dizisinin bir diğer yazısında daha birlikteyiz. Aritmetik programlamanın olmazsa olmazlarındandır. Sonuçta iki sayıyı toplayamıyorsak, neden kod yazalım değil mi? Shell script geliştirirken de bir takım matematiksel işlemlere ihtiyaç duyacağız. Bu yazıda, bazı matematiksel işlemleri nasıl yapacağımızı göreceğiz.

Shell, integer aritmetiği yapmamızı sağlayan altyapıya sahip. Yani ondalık sayılar ile işlem yapamıyor veya ondalık sonuçlar elde edemiyoruz. Eğer ondalık sayılarla çalışmamız gerekirse, bc isimli komutu kullanmamız gerekiyor fakat bu yazıda buna değinmeyeceğim.

Öncelikle, aritmetik işlemler için syntax olarak dolar işaretinden sonra iki tane iç içe parantez kullanmamız gerekiyor. Yani kodumuz $((aritmetik işlem)) şeklinde olmalı. Bu işlemin sonucunu daha sonra doğrudan konsola yazdırabiliyor veya bir değişkene atama yapabiliyoruz.

Aritmetik Operatörler

Operatör Açıklama Örnek Sonuç
+ Toplama echo $((5 + 3)) 8
- Çıkarma echo $((5 - 3)) 2
* Çarpma echo $((5 * 3)) 15
/ Bölme echo $((5 / 3)) 1
** Üs Alma echo $((5 ** 3)) 125
X++ Önce oku, sonra bir arttır X=4 echo $((X++)) echo $((X)) 4 5
X-- Önce oku, sonra bir azalt X=4 echo $((X--)) echo $((X)) 4 3
++X Önce bir arttır, sonra oku X=5 echo $((++X)) 6
--X Önce bir azalt, sonra oku X=5 echo $((--X)) 4
% Mod Alma echo $((7 % 5)) 2

Çalışan Örnek Bir Kod

Aşağıdaki kod 1 arttırma ve 1 azaltma işlemleri haricindeki işlemlerin yapıldığı, çalış deyince çalışan örnek bir programdır.

#!/bin/bash
# Shell Scripting
# Aritmetic Operations


# Addition
# Prints 8
echo -n "3 + 5 = "
echo $((3 + 5))

# Subtraction
# Prints 4
echo -n "7 - 3 = "
echo $((7 - 3))

# Multiplication
# Prints 12
echo -n "4 * 3 = "
echo $((4 * 3))

# Division
# Prints 4
echo -n "17 / 4 = "
echo $((17 / 4))

# Modulus
# Prints 2
echo -n "7 % 5 = "
echo $((7 % 5))

# Power
# Prints 32
echo -n "2 ** 5 = "
echo $((2 ** 5))

Ve programı çalıştırmak istemeyenler için, programın sonucu böyle oluyor:

3 + 5 = 8
7 - 3 = 4
4 * 3 = 12
17 / 4 = 4
7 % 5 = 2
2 ** 5 = 32

İşlem Sonucunu Değişkene Atamak ve Değişkenler ile İşlem Yapmak

Başlığı önemli birşey anlatacakmış gibi attım ama bu da zor birşey değil. Hatta burayı okumadan deneme yanılma ile de bulabilirsiniz. Doğrudan örnek bir kod yazayım.

#!/bin/bash
# Shell Scripting
# Aritmetic Operations

X=$((5 + 4))
Y=$((2 + 1))

SUM=$(($X + $Y))
MPY=$(($X * $Y))

echo "sum: $SUM, multiply: $MPY"

# You don't need to use $ sign for variables in $(( ))
SUM=$((X + Y))
MPY=$((X * Y))

echo "sum: $SUM, multiply: $MPY"

Yukarıdaki iki örnekte aynı işlemleri iki farklı şekilde yaptım. Burada anlatmak istediğim, $(()) içerisinde kullandığımız değişkenlerin başına $ işareti koymak zorunda değiliz. Yukarıdaki kodu çalıştırdığınızda iki echo komutunun da aynı şeyleri ekrana yazdırdıklarını göreceksiniz.

Evet arkadaşlar. Matematik ile ilgili de yeteri kadar ahkam kestik. Bundan sonraki yazılarımı da okumanız dileğiyle. Kodlu kalın.