Android

Bash if..else deyimi

Bash Scripting - Variables, Arrays, If-Then-Else

Bash Scripting - Variables, Arrays, If-Then-Else

İçindekiler:

Anonim

Karar verme, bilgisayar programlamanın en temel kavramlarından biridir. Diğer herhangi bir programlama dilinde olduğu gibi, if , if..else , if..elif..else ve Bash içindeki ifadeler belirli bir koşula bağlı olarak kod yürütmek için kullanılabilirse.

Bu öğreticide, Bash if ifadelerinin temelleri hakkında size yol göstereceğiz ve bunları kabuk komut dosyalarınızda nasıl kullanacağınızı göstereceğiz.

if Deyimi

Şartlı koşulların farklı formları olabilirse Bash. En temel if ifadesi aşağıdaki formu alır:

if TEST-COMMAND then STATEMENTS fi

if ifadesi, if anahtar sözcüğünden sonra koşullu ifade ve then anahtar sözcüğüyle başlar. Deyim fi anahtar sözcüğüyle biter.

TEST-COMMAND True değerlendirilirse, STATEMENTS yürütülür. TEST-COMMAND , False TEST-COMMAND döndürürse hiçbir şey olmaz, STATEMENTS yoksayılır.

Genel olarak, her zaman kodunuzu girintilemek ve kod bloklarını boş satırlarla ayırmak iyi bir uygulamadır. Çoğu kişi 4 boşluklu veya 2 boşluklu girinti kullanmayı seçer. Girintiler ve boş satırlar kodunuzu daha okunaklı ve düzenli hale getirir.

Belirli bir sayının 10'dan büyük olup olmadığını kontrol eden aşağıdaki örnek komut dosyasına bakalım.

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." fi

Kodu bir dosyaya kaydedin ve komut satırından çalıştırın:

bash test.sh

Komut dosyası sizden bir sayı girmenizi ister. Örneğin, 15 girerseniz, test komutu true değerlendirilir, çünkü 15 10'dan büyüktür ve then yan tümcesinin içindeki echo komutu yürütülür.

The variable is greater than 10.

if..else Bildirimi

Bash if..else deyimi aşağıdaki formu alır:

if TEST-COMMAND then STATEMENTS1 else STATEMENTS2 fi

TEST-COMMAND True değerlendirilirse, STATEMENTS1 yürütülür. Aksi takdirde, TEST-COMMAND False döndürürse, STATEMENTS2 yürütülür. İfadede yalnızca bir yan tümceye sahip olabilirsiniz.

Önceki örnek betiğe else cümle ekleyelim:

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." else echo "The variable is equal or less than 10." fi

if..elif..else Bildirimi

Bash if..elif..else deyimi aşağıdaki formu alır:

if TEST-COMMAND1 then STATEMENTS1 elif TEST-COMMAND2 then STATEMENTS2 else STATEMENTS3 fi

TEST-COMMAND1 True değerlendirilirse, STATEMENTS1 yürütülür. TEST-COMMAND2 True değerlendirilirse, STATEMENTS2 yürütülür. Test komutlarının hiçbiri True değerlendirilmezse, STATEMENTS2 yürütülür.

elif bir veya daha fazla elif cümlesi olabilir. else yan tümcesi isteğe bağlıdır.

Koşullar sırayla değerlendirilir. Bir koşul True değerini döndürdüğünde kalan koşullar gerçekleştirilmez ve program denetimi if ifadelerinin sonuna gider.

Bir önceki betiğe bir elif cümlesi ekleyelim:

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." elif] then echo "The variable is equal to 10." else echo "The variable is less than 10." fi

İfadeler iç içe yerleştirilmişse

Bash, if ifadeleri içinde if ifadelerini iç içe yerleştirmenize izin verir. Birden fazla if ifadesini başka bir if ifadesinin içine yerleştirebilirsiniz.

Aşağıdaki komut dosyası üç sayı girmenizi ister ve üç sayı arasında en büyük sayıyı yazdırır.

#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] then if] then echo "$VAR1 is the largest number." else echo "$VAR3 is the largest number." fi else if] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi fi

Çıktı şöyle görünecektir:

Enter the first number: 4 Enter the second number: 7 Enter the third number: 2 7 is the largest number. Nested if ifadelerini kullanmak yerine genellikle case ifadesini kullanmak daha verimlidir.

Çoklu Koşullar

Mantıksal OR ve AND işleçleri, if ifadelerinde birden çok koşul kullanmanıza izin verir.

Üç sayı arasındaki en büyük sayıyı yazdırmak için komut dosyasının başka bir sürümü. Bu sürümde, nested if ifadeleri yerine mantıksal AND ( && ) operatörünü kullanacağız.

#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] &&] then echo "$VAR1 is the largest number." elif] &&] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi

Test Operatörleri

Bash'te, test komutu aşağıdaki sözdizimi formlarından birini alır:

test EXPRESSION]

Test ifadesini reddetmek için mantıksal NOT ( ! ) Operatörünü kullanın. Dizeleri karşılaştırırken, herhangi bir kelime bölme veya globbing sorununu önlemek için her zaman tek veya çift tırnak kullanın.

Aşağıda en yaygın kullanılan operatörlerden bazıları verilmiştir:

  • -n VAR - VAR uzunluğu sıfırdan büyükse doğrudur. -z VAR - VAR boşsa doğrudur. STRING1 = STRING2 - Doğru [STRING1 ve STRING2 eşittir. STRING1 != STRING2 - Gerçek STRING1 ve STRING2 eşit değil. INTEGER1 -eq INTEGER2 - Gerçek INTEGER1 ve INTEGER2 eşittir. INTEGER1 -gt INTEGER2 - Gerçek INTEGER1, INTEGER2'den büyük. INTEGER1 -lt INTEGER2 - Gerçek INTEGER1, INTEGER2'den düşük. INTEGER1 -ge INTEGER2 - Gerçek INTEGER1, INTEGER2 değerine eşit veya daha büyük. INTEGER1 -le INTEGER2 - Gerçek INTEGER1, INTEGER2 değerine eşit veya daha düşük. -h FILE - DOSYA varsa ve sembolik bir bağlantıysa doğrudur. -r FILE - DOSYA varsa ve okunabilirse doğrudur. -w FILE - DOSYA varsa ve yazılabilirse doğrudur. -x FILE - FILE varsa ve çalıştırılabilirse doğrudur. -d FILE - DOSYA varsa ve bir -d doğrudur. -e FILE - FILE, türden (düğüm, dizin, soket vb.) bağımsız olarak varsa ve bir dosyaysa doğrudur. -f FILE - DOSYA varsa ve normal bir dosyaysa (dizin veya aygıt değil) doğrudur.

Sonuç

if..elif..else , if..else ve if..elif..else ifadeleri, Bash komut dosyasının yürütme akışını belirli koşulları değerlendirerek kontrol etmenizi sağlar.

bash terminali