Linux

Bash Komut Dosyasında Koşullu İfadeler Nasıl Kullanılır

Bash Komut Dosyasinda Kosullu Ifadeler Nasil Kullanilir5webp
Share

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.

 

Bash Komut Dosyasinda Kosullu Ifadeler Nasil Kullanilir


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,

Bash Komut Dosyasinda Kosullu Ifadeler Nasil Kullanilir2

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ı,

 

Bash Komut Dosyasinda Kosullu Ifadeler Nasil Kullanilir3

 

İç 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

Bash Komut Dosyasinda Kosullu Ifadeler Nasil Kullanilir34webp

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

Bash Komut Dosyasinda Kosullu Ifadeler Nasil Kullanilir5webp