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 | 4 5 |
X-- | Önce oku, sonra bir azalt | X=4 | 4 3 |
++X | Önce bir arttır, sonra oku | X=5 | 6 |
--X | Önce bir azalt, sonra oku | X=5 | 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.

sl hoca peki txt dosyası içindeki
YanıtlaSil1
2
3
4
5
top=15 şeklindeki bir hesaplama nasıl yapılır
Selam,
SilStackoverflow'daki cevaplardan birisinde şöyle bir komut vermiş:
awk '{ sum += $1 } END { print sum }' filename.txt
Evde denedim çalışıyor :)
İlgili link: https://stackoverflow.com/questions/2702564/how-can-i-quickly-sum-all-numbers-in-a-file