Özet
[ ifade ]
test ifade
Açıklama
[ yardımcı programı (genellikle test yardımcı programının bir takma adıdır), belirtilen ifadeyi (expression) değerlendirir. Eğer ifade doğru (true) olarak değerlendirilirse çıkış durumu 0 (doğru) olarak döndürülür; aksi takdirde 1 (yanlış) döndürülür. Eğer hiçbir ifade belirtilmemişse yine 1 (yanlış) çıkış kodu döndürülür.
Tüm operatörler, karşılaştırma bayrakları ve parantezler [ komutuna boşluklarla ayrılmış bağımsız bağımsız değişkenler (arguments) olarak iletilmelidir.
[!IMPORTANT]
[adıyla çağrıldığında, komut satırındaki ifadenin son argümanının tam olarak kapanış köşeli parantezi olan]karakteri olması zorunludur.
Seçenekler (Koşul Belirteçleri)
İfadeleri oluşturmak için aşağıdaki birincil belirteçler (primaries) kullanılır:
-b dosya:dosyamevcutsa ve bir blok özel dosyası (block special file) ise doğru.-c dosya:dosyamevcutsa ve bir karakter özel dosyası (character special file) ise doğru.-d dosya:dosyamevcutsa ve bir dizin (klasör) ise doğru.-e dosya:dosyamevcutsa (türünden bağımsız olarak) doğru.-f dosya:dosyamevcutsa ve normal bir dosya (regular file) ise doğru.-g dosya:dosyamevcutsa veset-group-IDbayrağı ayarlanmışsa doğru.-h dosya/-L dosya:dosyamevcutsa ve bir sembolik bağlantı (symlink) ise doğru. Geriye dönük uyumluluk yerine-Lkullanılması önerilir.-k dosya:dosyamevcutsa vestickybiti ayarlanmışsa doğru.-n karakter_dizisi: Karakter dizisinin (string) uzunluğu sıfırdan farklıysa doğru.-p dosya:dosyamevcutsa ve bir adlandırılmış boru hattı (FIFO) ise doğru.-r dosya:dosyamevcutsa ve okunabilir (read) ise doğru.-s dosya:dosyamevcutsa ve boyutu sıfırdan büyükse doğru.-t dosya_tanımlayıcısı: Belirtilen sayısaldosya_tanımlayıcısı(file descriptor) açık ise ve bir terminal ile ilişkili ise doğru.-u dosya:dosyamevcutsa veset-user-IDbayrağı ayarlanmışsa doğru.-w dosya:dosyamevcutsa ve yazılabilir (write) ise doğru (dosya sisteminin salt okunur olmasından etkilenmez).-x dosya:dosyamevcutsa ve çalıştırılabilir (execute) veya dizinler için aranabilir ise doğru.-z karakter_dizisi: Karakter dizisinin uzunluğu sıfır (boş) ise doğru.-O dosya:dosyamevcutsa ve sahibi, bu işlemin etkin kullanıcı kimliği (effective UID) ile eşleşiyorsa doğru.-G dosya:dosyamevcutsa ve grubu, bu işlemin etkin grup kimliği (effective GID) ile eşleşiyorsa doğru.-S dosya:dosyamevcutsa ve bir soket (socket) ise doğru.
İkili (Binary) Karşılaştırma Operatörleri
dosya1 -nt dosya2:dosya1mevcutsa vedosya2'den daha yeni bir değişiklik zamanına (mtime) sahipse doğru.dosya1 -ot dosya2:dosya1mevcutsa vedosya2'den daha eski bir değişiklik zamanına sahipse doğru.dosya1 -ef dosya2: Her iki dosya da mevcutsa ve aynı fiziksel dosyaya (aynıinodenumarasına) işaret ediyorsa doğru.karakter_dizisi: Karakter dizisi boş (null) değilse doğru.s1 = s2/s1 == s2:s1ves2dizileri birbirinin aynısı ise doğru (==uyumluluk genişletmesidir).s1 != s2:s1ves2dizileri birbirinin aynısı değilse doğru.s1 < s2: Karakterlerin ikili (ASCII) değerine göres1dizisis2'den önce geliyorsa doğru.s1 > s2: Karakterlerin ikili (ASCII) değerine göres1dizisis2'den sonra geliyorsa doğru.n1 -eq n2:n1ven2tam sayıları cebirsel olarak eşitse doğru.n1 -ne n2:n1ven2tam sayıları cebirsel olarak eşit değilse doğru.n1 -gt n2:n1tam sayısın2tam sayısından büyükse doğru.n1 -ge n2:n1tam sayısın2tam sayısından büyük veya eşitse doğru.n1 -lt n2:n1tam sayısın2tam sayısından küçükse doğru.n1 -le n2:n1tam sayısın2tam sayısından küçük veya eşitse doğru.
[!NOTE] Sembolik bağlantılarda,
-hve-Ldışındaki tüm belirteçler sembolik bağlantının hedefini çözümler ve değerlendirmeyi hedef dosya üzerinde gerçekleştirir.
Mantıksal Birleştirme Operatörleri
! ifade: Mantıksal DEĞİL (NOT) işlemi.ifadeyanlış ise doğru döndürür.ifade1 -a ifade2: Mantıksal VE (AND) işlemi. Her iki ifade de doğruysa doğru döndürür.ifade1 -o ifade2: Mantıksal VEYA (OR) işlemi. İki ifadeden en az biri doğruysa doğru döndürür.( ifade ): İfadeleri gruplandırarak mantıksal öncelikleri belirler.-aoperatörü,-ooperatöründen daha yüksek önceliğe sahiptir.
Örnekler
Aşağıdaki örnekler kabukta (shell) çalıştırılabilecek şekilde gösterilmiştir:
Bir dosyanın mevcut ve okunabilir olup olmadığını
[ile kontrol etme:[ -r /etc/passwd ] && echo "Erisilebilir"Bir dizinin varlığını test etme:
[ -d /tmp ] && echo "Dizin mevcut"İki tam sayıyı karşılaştırma:
[ 10 -gt 5 ] && echo "10, 5'ten buyuktur"Metin değişkeninin durumunu kontrol etme:
kullanici="Ahmet" [ -z "$kullanici" ] && echo "Kullanici adi bos" || echo "Hos geldin, $kullanici"Kısa devre mantığıyla gereksiz dosya sistemi erişimlerini önleme:
[ -z "$dosya" ] && [ -w "$dosya" ][!WARNING]
[ -z abc -a -w dosya ]ifadesinde,-akullanılsa bile ifadenin her iki tarafı da daima çalıştırılır (değerlendirilir). Bu da gereksiz sistem çağrılarına yol açar. Bundan kaçınmak için yukarıdaki gibi kabuk düzeyinde kısa devre (&&veya||) operatörlerini tercih edin.
Ayrıca Bakınız
sh(1), find(1), stat(1), builtin(1), expr(1), symlink(7)
Standartlar
[ yardımcı programı, IEEE Std 1003.2 (“POSIX.2”) spesifikasyonunun tam bir üst kümesini uygular. < , == , > , -ef , -nt , -ot , -G ve -O standart dışı uyumluluk uzantılarıdır.