Genel olarak herhangi bir yazılım yaparken olduğu gibi, Linux Shell'de de komut yazarken veya yeni bir script dosyası oluşturuken bir dosyanın var olup olmadığını kontrol etmemiz gereken durumlar sıkça karşımıza çıkar. Hele de bazı işlemleri otomatikleştirmeye çalışıyorsak bu kontroller çok önemli hale gelir.
Linux Shell'de aşağıdaki kod örneği ile bir dosyanın varlığını kolayca kontrol edebiliriz.
if [ -f test.txt ] # Dosya var mı?
then
echo "Dosya var." # Var ise bu satırı yazdır.
else
echo "Dosya yok!" # Yoksa bu satırı yazdır.
fi
Temel yapı bu kadar basit. Dosya adını bir değişkenden okumak istersek şu şekilde küçük bir değişiklik yapmamız gerekir.
dosya_adi="test.txt"
if [ -f $dosya_adi ] # Dosya var mı?
then
echo "Dosya var." # Var ise bu satırı yazdır.
else
echo "Dosya yok!" # Yoksa bu satırı yazdır.
fi
Burada yazımda dikkat etmemiz gereken noktalardan biri "if" koşulunu yazarken köşeli parantezler arasındaki boşluk zorunluluğudur. Yani
# Doğru yazım
if [ -f test.txt ] # İlk köşeli parantezden sonra ve ikinciden önce boşluk olmalı. Dikkat!
yerine
# Yanlış yazım
if [-f test.txt] # Köşeli parantezler arasında boşluk yok. Hata verecektir!
yazarsak hata verecektir. "Aynı şeyi yazdım ama hata veriyor" şeklindeki hayıflanmalarla saç baş yoldurup insanı çileden çıkarabilir. Dikkat!
Tabi bu örnekte sadece "echo" komutu ile ekrana dosyanın var olup olmadığını yazdırdık. Onun yerine ihtiyaca göre istediğimiz komutları sıralayabiliriz. Örneğin dosya varsa içeriğini okuyabiliriz, dosyayı başka yere kopyalayabiliriz, adını değiştirebiliriz veya daha karmaşık işler yapabiliriz. Dosya yoksa da uyarı verdirip işlemi sonlandırabiliriz.
Yorumlar
Yorum Gönder