Bash Komut Dosyasında Koşullu İfadeler Nasıl Kullanılır
Bu kılavuzda, bash betiğinde if, if-else, If-elif-else, netsted if ve case gibi koşullu ifadelerin nasıl kullanılacağını öğreneceğiz. Koşullu ifadeler, koşula göre karar vermeye yardımcı olduğu için bash betiğinde önemli bir rol oynar.
Bir bash betiğinde, if ifadesi bir koşulun doğru olup olmadığını kontrol eder. Eğer öyleyse, kabuk if ifadesiyle ilişkili kod bloğunu yürütür. İfade true değilse, kabuk if ifade bloğunun sonunun ötesine atlar ve Devam eder.
if Bildirimi
Sözdizimi:
if [ condition_command ]
then
command1
command2
……..
last_command
fi
Aşağıdaki bash betiği örneğinde, if koşulu deyimini kullanarak iki sayıyı karşılaştırıyoruz.
#!/bin/bash echo "Enter the Number: " read n if [ $n -lt 150 ] then echo "Number is $n" fi
Bu betiği çalıştırdığımızda eğer 150’den küçükse sayıyı yazdıracaktır.
if-else İfadesi
Normal if deyimine ek olarak, if deyimini bir else bloğu ile genişletebiliriz. Temel fikir, eğer ifade true ise if bloğunu yürütmektir. İfade yanlışsa, else bloğunu yürütün.
Syntax :
if [ condition_command ]
then
command1
command2
……..
last_command
else
command1
command2
……..
last_command
fi
If we modify the above script and insert else block then it would look like below,
#!/bin/bash echo "Enter the Number: " read n if [ $n -gt 150 ] then echo "Number $n is greater than 150" else echo "Number $n is smaller than 150" fi
Komut dosyasını çalıştırıp 129 sayısını girersek, aşağıda gösterildiği gibi else bloğunu çalıştıracaktır,
If-elif-else İfadesi
Bash betiğinde, if deyimini kullanarak birden çok koşul uygulamak istiyorsanız, ‘if elif else’ kullanın. Bu tür koşullu deyimlerde, ilk koşul sağlanırsa aşağıdaki kod çalıştırılır, aksi takdirde sonraki koşul kontrol edilir ve eşleşmezse aşağıdaki komutlar yürütülür, aksi takdirde deyim yürütülür. Sözdizimi ve örneği aşağıda gösterilmiştir.
sözdizimi:
if [ condition_command ]
then
command1
command2
……..
last_command
elif [ condition_command2 ]
then
command1
command2
……..
last_command
else
command1
command2
……..
last_command
fi
#!/bin/bash echo "Enter the Number: " read n if [ $n -gt 150 ] then echo "Number $n is greater than 150" elif [ $n -lt 150 ] then echo "Number $n is smaller than 150" else echo "Number $n is equal to 150" fi
Komut Dosyası Yürütme çıktısı,
İç içe if İfadesi
If deyimi ve else deyimi bir bash betiğinde yuvalanabilir. ‘fi’ anahtar sözcüğü, iç if ifadesinin sonunu gösterir ve tüm if ifadesinin ‘fi’ anahtar kelimesiyle bitmesi gerekir.
Yuvalanmış if’nin temel sözdizimi aşağıda gösterilmiştir:
if [ condition_command ]
then
command1
command2
……..
last_command
else
if [ condition_command2 ]
then
command1
command2
……..
last_command
else
command1
command2
……..
last_command
fi
fi
Yukarıdaki komut dosyasını iç içe if ifadesini kullanacak şekilde değiştirdiğimizde, kodu aşağıdaki gibi görünür,
#!/bin/bash echo "Enter the Number: " read n if [ $n -gt 150 ] then echo "Number $n is greater than 150" else if [ $n -lt 150 ] then echo "Number $n is smaller than 150" else echo "Number $n is equal to 150" fi fi
Vaka Açıklaması
Case deyimi, birden fazla elif içeren if deyimine benzer. bash betiğindeki case ifadesi ifadeyi genişletir ve ardından tüm kalıplarla eşleşmeyi bulmaya çalışır. Bir eşleşme bulunduğunda, tüm ifadeler çift noktalı virgüle (;;) kadar yürütülür. Eşleşme olmaması durumunda *) kalıbında belirtilen ifadeler çalıştırılacaktır.
case expression in pattern1) statements ;; pattern2) statements ;; pattern3) statements ;; pattern-n) statements ;; *) statements ;; esac
#!/bin/bash echo "Which is Your Favorite Linux Distro?" echo "Debian, Ubuntu, SUSE, RHEL, Arch" read -p "Type Your Linux Distro:" OS case $OS in Debian) echo "Most Stable Linux OS, good choice " ;; Ubuntu) echo "Best Linux OS for Desktop and Servers" ;; SUSE) echo "Top Linux OS for SAP Application" ;; Arch) echo "Flexible OS for experienced Linux users" ;; *) echo "Please Enter Correct OS from the list" ;; esac