Bash Komut Dosyasında Test Koşulları Nasıl Kullanılır
NS LinuxÖlçek komutu bir öğeyi diğeriyle karşılaştırır, ancak daha yaygın olarak kullanılır. BASH kabuk betikleri bir parçası olarak koşullu ifadeler hangi kontrol mantığı ve program akışı.
Temel Bir Örnek

Bu komutları deneyin bir terminal penceresi.
test 1 -eq 2 && yankı "evet" || yankı "hayır"
Yukarıdaki komut şu şekilde bozulur:
- Ölçek: Karşılaştırma gerçekleştirme komutu
- 1:Karşılaştıracağınız ilk öğe. Bu örnekte, sayı 1 ancak herhangi bir sayı veya tırnak içinde bir dize olabilir.
- -eşdeğer: Karşılaştırma yöntemi. Bu durumda, bir değerin diğerine eşit olup olmadığını test ediyorsunuz.
- 2: İlk öğeyi karşılaştırdığınız öğe. Bu örnekte, sayı 2.
- &&: Komutları sırayla zincirlemek için bir Linux kısayolu. Test zincirlerinden takip eden komutlara çıktı. Bir çift ve işareti, kendisinden önceki komut 0 çıkış durumuna sahip olduğunda yürütülür; bu, komutun başarısız olmadığını söylemenin süslü bir yoludur.
-
yankı "evet":Karşılaştırma başarılı olursa çalıştırılacak komut. Bu durumda yaptığımız tek şey,
- ||: Bir bakıma &&; çift boru yalnızca kendisinden önceki komut başarısız olursa (0 olmayan bir çıkış durumuna sahipse) yürütülür.
- yankı "hayır": Karşılaştırma başarısız olursa çalıştırılacak komut.
Bir kabuk isteminden çalıştırın, Ölçek standart çıktıya bir değer döndürmez, yalnızca bir çıkış durumu kodu döndürür. Bu yüzden bir yankı komutunu zincirlemek gereklidir.

Özünde, komut 1 ile 2'yi karşılaştırıyor ve eğer eşleşirlerse, "evet" ifadesi yankılanıyor. "evet" görüntüleyen ve eşleşmiyorlarsa, görüntüleyen yankı "hayır" ifadesi yürütülür. "numara."
Sayıları Karşılaştırma
Sayı olarak ayrıştırılan öğeleri karşılaştırıyorsanız, aşağıdaki karşılaştırma operatörlerini kullanabilirsiniz:
- -eq: değer 1, değer 2'ye eşittir
- -ge: değer 1, değer 2'ye eşit veya daha büyük
- -gt: değer 1, değer 2'den büyük
- -le: değer 1, değer 2'den küçük veya buna eşit
- -lt: değer 1, değer 2'den az
- -ne: değer 1, değer 2'ye eşit değil
Örnek Testler
test 1 -eq 2 && yankı "evet" || yankı "hayır"
(1'in 2'ye eşit olmaması nedeniyle ekranda "hayır" görüntülenir)
test 1 -ge 2 && yankı "evet" || yankı "hayır"
(1, 2'ye eşit veya daha büyük olmadığı için ekranda "hayır" görüntülenir)
test 1 -gt 2 && yankı "evet" || yankı "hayır"
(1, 2'den büyük olmadığı için ekranda "hayır" görüntülenir.
test 1 -le 2 && yankı "evet" || yankı "hayır"
(1, 2'den küçük veya 2'ye eşit olduğu için ekranda "evet" görüntülenir)
test 1 -lt 2 && yankı "evet" || yankı "hayır"
(1, 2'den küçük veya 2'ye eşit olduğu için ekranda "evet" görüntülenir)
test 1 -ne 2 && yankı "evet" || yankı "hayır"
(1, 2'ye eşit olmadığı için ekranda "evet" görüntülenir)
Metin Karşılaştırma
Dize olarak ayrıştırılan öğeleri karşılaştırırken aşağıdaki karşılaştırma operatörlerini kullanın:
- =: dize 1, dize 2 ile eşleşir
- !=: dize 1, dize 2 ile eşleşmiyor
- -n: dize uzunluğu 0'dan büyük
- -z: dize uzunluğu 0'a eşittir
Örnekler
test "string1" = "string2" && yankı "evet" || yankı "hayır"
("dize1", "dize2"ye eşit olmadığı için ekranda "hayır" görüntülenir)
test "string1" != "string2" && yankı "evet" || yankı "hayır"
("dize1", "dize2"ye eşit olmadığı için ekranda "evet" görüntülenir)
test -n "string1" && echo "evet" || yankı "hayır"
("dize1" sıfırdan büyük bir dize uzunluğuna sahip olduğu için ekranda "evet" görüntülenir)
test -z "string1" && echo "evet" || yankı "hayır"
("dize1" sıfırdan büyük bir dize uzunluğuna sahip olduğu için ekranda "hayır" görüntülenir)
Dosyaları Karşılaştırma
Dosyaları karşılaştırırken aşağıdaki karşılaştırma operatörlerini kullanın:
- -ef: Dosyalar aynı cihaz ve inode numaralarına sahip (aynı dosya mı)
- -nt: İlk dosya ikinci dosyadan daha yeni
- -ot: İlk dosya ikinci dosyadan daha eski
- -B: Dosya var ve özel blok
- -C: Dosya var ve özel karakter
- -NS: Dosya var ve bir dizin
- -e: Dosya var
- -F: Dosya var ve normal bir dosya
- -G: Dosya var ve belirtilen grup numarasına sahip
- -G: Dosya, kullanıcı grubu tarafından var ve sahibi
- -H veya -L: Dosya var ve bir sembolik bağlantı
- -k: Dosya var ve yapışkan biti ayarlanmış
- -Ö: Dosya var, sahibi sizsiniz
- -P: Dosya var ve adlandırılmış bir kanal
- -r: Dosya var ve okunabilir durumda
- -s: Dosya var ve sıfırdan büyük bir boyuta sahip
- -S: Dosya var ve bir priz
- -T: Dosya tanıtıcısı bir terminal
- -u: Dosya var ve set-user-id biti ayarlandı
- -w: Dosya var ve yazılabilir
- -x: Dosya var ve yürütülebilir
Örnekler
test /path/to/file1 -nt /path/to/file2 && echo "evet"
(Dosya1 dosya2'den daha yeniyse, "evet" kelimesi görüntülenecektir)
test -e /path/to/file1 && echo "evet"
(eğer dosya1 varsa "evet" kelimesi görüntülenecektir)
test -O /path/to/file1 && echo "evet"
(eğer dosya1'e sahipseniz, "evet" kelimesi görüntülenir")
Özel engelle: Dosya, verilerin bayt blokları halinde okunduğu anlamına gelen bir blok aygıtıdır. Bunlar genellikle sabit sürücüler gibi aygıt dosyalarıdır.
Özel karakter: Dosyaya yazdığınız anda dosya üzerinde işlem yapılır ve genellikle seri bağlantı noktası gibi bir aygıttır.
Birden Fazla Koşulu Karşılaştırma
Şimdiye kadar her şey bir şeyi diğeriyle karşılaştırıyordu, ama ya iki durumu karşılaştırmak isterseniz?
Örneğin, bir hayvanın dört bacağı varsa ve "möö" diyorsa, muhtemelen bir inektir. Sadece dört bacağı kontrol etmek bir ineğiniz olduğunu garanti etmez, ancak çıkardığı sesi kontrol etmek kesinlikle garanti eder.
Her iki koşulu da aynı anda test etmek için aşağıdaki ifadeyi kullanın:
test 4 -eq 4 -a "moo" = "moo" && echo "bu bir inek" || echo "bu bir inek değil"
Buradaki anahtar kısım, -a anlamına gelen bayrak ve.
Aynı testi gerçekleştirmenin daha iyi ve daha yaygın olarak kullanılan bir yolu vardır ve bu aşağıdaki gibidir:
test 4 -eq 4 && test "moo" = "moo" && echo "bu bir inek" || echo "bu bir inek değil"
Şubeleri takip edin!
dallanması Ölçek komut önemlidir. İlk test (4 = 4) başarısız olursa, Ölçek komut, sıfır olmayan bir çıkış koduyla sona erer. Böylece çift boru sembolüne atlıyoruz ve standart çıktıya "bu bir inek değil" yazdırıyor. Ancak, ilk test başarılı olursa ve böylece Ölçek bir çıkış koduyla sonuçlanır 0, sonra ilk çift ve işaretine atlıyoruz. Bir sonraki ifade başka bir test koşulu!
İkinci test başarısız olursa yine çift boruya atlayıp oradan devam ediyoruz. Bununla birlikte, ikinci test başarılı olursa, ikinci çift ve işareti ifadesine atlarız. bu örnek yalnızca standart çıktıya "bu bir inektir" ifadesini yansıtır ve ardından kabuğa geri döner çabuk.
Başka bir test, iki ifadeyi karşılaştırır ve her ikisi de doğruysa, bir dize çıktısı alır. Örneğin, "file1.txt" adlı bir dosyanın veya "file1.doc" adlı bir dosyanın var olup olmadığını kontrol etmek için aşağıdaki komutu kullanabilirsiniz:
test -e dosya1.txt -o -e dosya1.doc && yankı "dosya1 var" || echo "dosya1 yok"
Buradaki anahtar kısım, -Ö hangi anlamına gelir veya.
Aynı testi gerçekleştirmenin daha iyi ve daha yaygın olarak kullanılan bir yolu vardır ve bu aşağıdaki gibidir:
test -e dosya1.txt || test -e dosya1.doc && yankı "dosya1 var" || echo "dosya1 yok"
Test Anahtar Kelimesini Kaldırma
kelimesini kullanmana gerek yok aslında Ölçek karşılaştırma yapmak için. Tek yapmanız gereken, ifadeyi aşağıdaki gibi köşeli parantez içine almaktır:
[ -e dosya1.txt ] && echo "dosya1 var" || echo "dosya1 yok"
NS [ ve ] temelde aynı anlama gelir Ölçek.
Artık şunu biliyorsunuz ki, birden çok koşulu karşılaştırarak aşağıdaki gibi iyileştirebilirsiniz:
[ 4 -eq 4] && [ "moo" = "moo" ] && echo "bu bir inek" || echo "bu bir inek değil"
[ -e dosya1.txt ] || [ -e dosya1.doc ] && echo "dosya1 var" || echo "dosya1 yok"
Özet
Test komutu komut dosyalarında daha kullanışlıdır çünkü bir değişkenin değerini diğerine karşı test edebilir ve program akışını kontrol edebilirsiniz. Komut satırında, bir dosyanın var olup olmadığını test etmek için kullanın.