Bash If-Then-Else Örneği

Bash If Then Else Example



Bu dersimizde yazdığımız Bash ortamı scriptlerinde If-Then-Else deyimlerini nasıl kullanabileceğimizi göreceğiz. If-Then-Else ifadeleri, bazı koşullar karşılandığında bir komut dosyasının eylem yolunu tanımlamanın bir yolunu sağlamak için kullanışlı bir araçtır. If-Then-Else deyimlerinin sözdiziminin ne olduğunu görelim:

EğerBAZI KOMUTLAR;
sonraSONRA-KOMUTLAR;
BaşkaBAŞKA KOMUTLAR;
olmak

Yukarıdaki komutta, SOME-COMMANDS'ın doğru olduğu veya dönüş durumunun 0 olduğu tespit edilirse, THEN-COMMANDS yürütülecektir. Aksi takdirde, ELSE-COMMANDS yürütülür. SOME-COMMANDS'da, genellikle tamsayılar biçiminde bazı String karşılaştırması veya değer karşılaştırması yaparız. Ayrıca dosya içeren birçok işlem yapabiliriz. Esas olarak dosya tabanlı koşullarla çalışırken kullanılan bazı örnek birincil komutlara bakalım:







Öncelik Anlam
[ -ile ] DOSYA varken true değerini döndürür.
[-B] DOSYA mevcut olduğunda ve bir blok özel dosya olduğunda true değerini döndürür.
[-C] DOSYA mevcut olduğunda ve bir karakter özel dosyası olduğunda true değerini döndürür.
[ -NS ] FILE var olduğunda ve bir dizin olduğunda true değerini döndürür.
[ -Ve ] DOSYA varken true değerini döndürür.
[ -F ] DOSYA mevcut olduğunda ve normal bir dosya olduğunda true değerini döndürür.
[ -G ] DOSYA mevcut olduğunda ve SGID biti ayarlandığında true değerini döndürür.
[ -H ] DOSYA mevcut olduğunda & sembolik bir bağlantı olduğunda true değerini döndürür.
[-k] DOSYA mevcut olduğunda ve yapışkan biti ayarlandığında true değerini döndürür.
[ -P ] DOSYA mevcut olduğunda ve adlandırılmış bir kanal (FIFO) olduğunda true değerini döndürür.
[ -r ] DOSYA mevcut olduğunda ve okunabilir olduğunda true değerini döndürür.
[ -s ] DOSYA mevcut olduğunda ve sıfırdan büyük bir boyuta sahip olduğunda true döndürür.
[ -T ] FD dosya tanıtıcısı açıkken true döndürür ve bir terminale atıfta bulunur.
[-u] DOSYA mevcut olduğunda ve SUID (kullanıcı kimliğini ayarla) biti ayarlandığında true değerini döndürür.
[ -içinde ] DOSYA mevcut olduğunda ve yazılabilir olduğunda true değerini döndürür.
[-x] DOSYA mevcut olduğunda ve yürütülebilir olduğunda true değerini döndürür.
[-Ö] DOSYA mevcut olduğunda ve etkin kullanıcı kimliğine ait olduğunda true değerini döndürür.
[ -G ] DOSYA mevcut olduğunda ve etkin grup kimliğine ait olduğunda true değerini döndürür.
[ -NS ] DOSYA mevcut olduğunda & sembolik bir bağlantı olduğunda true değerini döndürür.
[ -N ] DOSYA mevcut olduğunda ve son okunduğundan beri değiştirildiğinde true döndürür.
[ -S ] DOSYA mevcut olduğunda ve bir yuva olduğunda true değerini döndürür.

THEN-COMMANDS ve ELSE-COMMANDS, herhangi bir geçerli UNIX işlemi veya herhangi bir yürütülebilir program olabilir. unutmayın sonra ve olmak komutlar, bir komut dosyasının tamamen ayrı öğeleri olarak kabul edildikleri için noktalı virgülle ayrılır.



If-Then-Else Basit Örnek

Dersimize If-Then-Else ifadeleri ile çok basit bir örnekle başlayalım.
İşte örnek bir program:



Örnek ise

Örnek ise





Komut dosyamızı çalıştırdığımızda gördüğümüz çıktı:

$. ifelse1.sh
Değerler aynı!
$

Komut satırı bağımsız değişkenlerini kullanma

Ayrıca betiklerimizde komut satırı argümanlarını kullanabilir ve tanımladığımız IF ifadesinde argüman sayısını ve değerlerin kendisini koşul olarak kullanabiliriz. Önce aşağıdaki içeriğe sahip bir metin dosyası tanımlıyoruz:



Benim adım LinuxHint. Sunucuları, özellikle Ubuntu sunucularını seviyorum. onlar çok
ölümcül!

Artık bir metin dosyasında bir kelimenin geçip geçmediğini bulan bir komut dosyası yazabiliriz. Şimdi betiği tanımlayalım:

dışarı attı '2 dolarda 1 doları bulmak'
kavramak 1 dolar 2 dolar
Eğer [ $? -doğmak 0 ]
sonra
dışarı attı '$1, $2 dosyasında bulunamadı.'
Başka
dışarı attı '2$ dosyasında 1$ bulundu.'
olmak
dışarı attı 'Komut dosyası tamamlandı.'

Bu komut dosyası çok dinamik. Bulunacak kelimeyi ve aranacak dosyayı komut satırından dikkate alır. Artık betiğimizi çalıştırmaya hazırız:

. ifelse2.sh merhaba.txt'yi seviyorum

Şöyle bir çıktı göreceğiz:

Aşkı bulmaiçindemerhaba.txt
aşk bulunduiçinde dosyamerhaba.txt.
Komut dosyası tamamlandı.

Komut satırı argümanlarının sayısını kontrol etme

Bir IF ifadesinin içinde, aynı şekilde hareket edebilmemiz için komuta kaç tane komut satırı argümanının iletildiğini bile kontrol edebiliriz:

saymak=$ #
Eğer [ ! $sayım -gt 1 ]
sonra
dışarı attı 'Yeterli argüman yok'
Başka
dışarı attı 'Aferin!'
olmak

Şimdi bu betiği çalıştıralım, aşağıdaki çıktıyı göreceğiz:

Komut satırı argümanları

Komut satırı argümanları

If-Then-Elif-Else İfadeleri

Programımızın tanımladığımız komutları yürütmek için aldığı karar yolunu daraltmak için aynı blokta birden fazla IF ifadesine de sahip olabiliriz. Komut dosyalarımızda birden çok IF ifadesi tanımlamak için kullanılan sözdizimi şöyledir:

EğerTEST-KOMUTLARI;
sonra
SONUÇ-KOMUTLAR;
elif
BAŞKA-KOMUTLAR;
sonra
BAŞKA-SONUÇ-KOMUTLAR;
Başka
ALTERNATİF KOMUTLAR;
olmak

Bu oldukça tanıdık geliyor ve takip etmesi de kolay. Ağacın nasıl çalıştığını belirlemek için basit bir örnek tanımlayalım:

saymak=$ #
Eğer [ $sayım -eq 1 ]
sonra
dışarı attı 'Yalnızca bir argüman bulundu.'
elif [ $sayım -eq 2 ]
sonra
dışarı attı 'Daha iyi, iki argüman bulundu.'
Başka
dışarı attı 'İyi iş, birçok argüman bulundu!'
olmak

İşte bu komutla geri aldığımız şey:

Eğer Sonra Elif Else örneği

Eğer Sonra Elif Else örneği

Durum ifadelerini kullanma

IF-ELSE ifadeleri, karar vermeniz gereken çok sayıda seçenek listeniz olduğunda kullanışlıdır. Ancak, sonuçla tam olarak eşleşen birkaç durumda bir eylem gerçekleştirmek istemeniz durumunda, Bash betiklerinde de CASE deyimlerini kullanabiliriz. Sözdizimi şöyle görünür:

durumİFADEiçindeDAVA 1)YÜRÜTMEK İÇİN KOMUTLAR;
DURUM2)YÜRÜTMEK İÇİN KOMUTLAR;
DURUM2)YÜRÜTMEK İÇİN KOMUTLAR;
...)YÜRÜTMEK İÇİN KOMUTLAR;
*)YÜRÜTMEK İÇİN KOMUTLAR;
esac

* ile son durum, varsayılan durum olarak hareket eder ve yukarıda tanımlanan durumlardan hiçbiri eşleşmediği zaman yürütülür.

CASE deyimlerini kullanarak hızlı bir şekilde basit bir örnek oluşturalım:

durum '1 dolar' içinde
1)
dışarı attı 'Değer 1'dir.
;;
2)
dışarı attı 'Değer 2'dir.
;;
3)
dışarı attı 'Değer 3'tür.
;;
*)
dışarı attı 'Diğer değer geçti.'
esac

Her CASE ifadesi ;; (çift noktalı virgül işareti). İşte bu komutla geri aldığımız şey:

VAKA örneği

VAKA örneği

Çözüm

Bu derste, programlarımızda var olan veya konumsal kullanarak kullanıcı tarafından iletilen değerler temelinde belirli eylemler yapmak için tanımladığımız Bash betiklerinde IF-ELSE, IF-THEN-ELIF ve CASE deyimlerini nasıl kullanabileceğimize baktık. parametreler.