Shell Scripting İçin Başlangıç Kılavuzu 4 Koşullar & If If Sonra İfadeler
Kılavuzumuzda, kabuk komut dosyası oluşturma konusunda rahat bir deneyim hissetmeniz için gereken temelleri yeterince ele aldık. Bu haftaki taksitte, şartlar ve “eğer öyleyse” ifadeleri gibi daha eğlenceli şeylerden bazılarını ele alacağız..
Koşullar Nedir??
Günlük dilde, şartların bir şeylerin gerçekleşmesi için karşılanması gereken şartlar olduğunu söylüyoruz. Dizüstü bilgisayarımın internete bağlanabilmesi için, bir ISS'ye sahip olmak, modem ve / veya yönlendiricinin açık olması, dizüstü bilgisayarımın açık olması vb. Gibi yerine getirilmesi gereken birkaç koşul vardır. bu gereksinimlerden biri karşılanmadı, sonuç - internete bağlanan dizüstü bilgisayarım - olmadı.
Bilgi işlem dünyasındaki koşullar benzer şekilde çalışır. Bir dizenin başka bir dizeyle eşleşip eşleşmediğini, başka bir dizeyle eşleşip eşleşmediğini veya hatta varsa bile test edebiliriz. Benzer şekilde, birinin diğerinden büyük, küçük veya eşit olup olmadığını görmek için sayısal argümanları test edebiliriz. Test koşulları yerine getirildikten sonra bir şeylerin gerçekleşmesi için “if-then” ifadelerini kullanırız. Biçimleri oldukça basit.
DURUMDA
sonra
command1
command2
...
commandn
fi
Eğer İfadeler
Hızlı bir küçük test betiği çalıştıralım, olur mu?
eğer test $ 1 -gt $ 2 ise
sonra
echo “$ 1, $ 2'den büyük”
fi
Yalnızca bu koşul doğru olduğunda komut dosyasının aşağıdaki komutu çalıştıracağını fark edeceksiniz. Aksi takdirde, “if” ifadesi çıkacaktır. “İf” ifadesinden sonra herhangi bir komut varsa, o zaman normal olarak çalıştırılırlar. Bunu göstermek için yukarıdaki betiğimizin sonuna aşağıdaki satırı ekledim:
echo “Bu if ifadesinden sonra gelir”
İşte denemek isteyebileceğiniz diğer bazı sayısal operatörler:
- -eq: eşittir
- -ne: eşit değil
- -lt: den az
- -le: eşit veya daha küçük
- -gt: büyüktür
- -ge: büyük veya eşittir
Test Telleri
Şimdi, senaryonuzun ilk satırını şu şekilde değiştirirsek:
eğer test $ 1 = 2 $ ise
o zaman şartlar ikisinin eşit olup olmadığını test eder. Burada bir catch var ama! Bir eşittir işaretinin (=) kullanılması, sayıların değil, iki dizenin karşılaştırılmasını sağlar. Rakamları karşılaştırmak istiyorsanız, “-eq” operatörünü yukarıdaki “-gt” kullandığımıza benzer şekilde kullanmanız gerekir..
Şimdi başka bir değişiklik yapalım:
eğer test $ 1! = 2 $
Ünlem işaretinin (!) Dahil edilmesi “değil” değiştiricisi olarak hareket eder. Başka bir deyişle, yalnızca iki dize eşleşmediğinde aşağıdaki komutu çalıştırır.
İşte kullanabileceğiniz daha fazla string bazlı testlerin bir listesi:
- string: sadece kendi başına bir argüman kullanmak, string boş değilse (null) veya bir şekilde tanımlanmadığında test eder.
- -n string: string boş değilse ve tanımlanmışsa test eder
- -z string: string boş ve bu şekilde tanımlanmışsa test eder
Ne hakkında başka?
Kabul edeceğim, bu bölüm başlığı kesinlikle kötü bir kelime oldu. Tamam, eğer bir test doğruysa, bir komutu nasıl yürüttüğümüzü biliyoruz, ama eğer yanlış ise farklı bir komut uygulamak istersek? “If-then” ifadelerimize bir bölüm ekleyerek ikisini kolayca bir araya getirebiliriz - bir “başka”!
DURUMDA
sonra
command1
command2
...
commandn
Başka
command1
command2
...
commandn
fi
Basit bir senaryo oluşturalım.
Uygun girintili her şey var. Yakından bakarsanız, test komutu yerine köşeli parantez ([ve]) kullandığımızı fark edeceksiniz. Amaçlarımız için işlevsel olarak eşdeğerdirler ve çeşitli nedenlerden dolayı köşeli ayraçları görme olasılığınız çok daha yüksektir, bu yüzden bunları kullanacağız.
İşte çıktının neye benzeyeceği:
İşte bu kadar kolay!
Ben şimdi ne yapacağım?
Artık “if-then-else” ifadelerinin nasıl kullanılacağını bildiğinize göre, testleri gerçekleştirebilen komut dosyalarını çalıştırabilirsiniz. Örneğin, bir dosyanın md5 karmasını hesaplayacak bir komut dosyası çalıştırabilir ve daha sonra eşleşip eşleşmediklerini görmek için dosyayı indirdiğiniz dosyayla karşılaştırabilirsiniz..
Bazı bonus puanları için “for” döngüsüne sahip bir script oluşturabilirsiniz, ancak liste dosyasından satır okumak yerine test koşullarını kullanır ...
Yeni Başlayanlar İçin Shell Scripting Kılavuzu'ndaki daha ilginç parçalardan bazılarına ulaşıyoruz. Önceki dersleri kaçırdıysanız, kontrol etmeniz için kısa bir liste:
- Kabuk Betiğinin Temelleri
- Döngüler İçin Kullanma
- Daha Temel Komutlar
- Linux kabukları arasındaki farklar nelerdir??
- Temel Normal İfadeler nasıl kullanılır?
Test koşullarını kullanan komut dosyaları oluşturduysanız veya kullandıysanız, if-else-else ifadeleri ve “for” döngülerinde bizimle yorumlarınızı paylaşın!