Söz Dizimi
test ifade
[ ifade ]
Açıklama
test aracı, ifadeyi değerlendirir ve eğer ifade true (doğru) olarak değerlendirilirse sıfır (true) çıkış durumu döndürür; aksi takdirde 1 (false / yanlış) döndürür. Eğer hiçbir ifade yoksa, test yine 1 (false) döndürür.
Tüm operatörler ve bayraklar, test aracına verilen ayrı argümanlardır.
İfadeyi oluşturmak için aşağıdaki birincil öğeler (primaries) kullanılır:
-b dosya: Dosya mevcutsa ve bir blok özel dosyasıysa true.-c dosya: Dosya mevcutsa ve bir karakter özel dosyasıysa true.-d dosya: Dosya mevcutsa ve bir dizinse true.-e dosya: Dosya mevcutsa (türünden bağımsız olarak) true.-f dosya: Dosya mevcutsa ve normal bir dosyaysa true.-g dosya: Dosya mevcutsa ve set-group-ID bayrağı ayarlanmışsa true.-h dosya: Dosya mevcutsa ve bir sembolik bağ ise true. Bu operatör, bu programın önceki sürümleriyle uyumluluk amacıyla korunmuştur. Varlığına güvenmeyin; bunun yerine -L kullanın.-k dosya: Dosya mevcutsa ve sticky bit'i ayarlanmışsa true.-n string: string uzunluğu sıfırdan farklıysa true.-p dosya: Dosya bir adlandırılmış boru (FIFO) ise true.-r dosya: Dosya mevcutsa ve okunabilirse true.-s dosya: Dosya mevcutsa ve boyutu sıfırdan büyükse true.
-t dosya_tanımlayıcı Dosya tanımlayıcı numarası dosya_tanımlayıcı olan dosya açıksa ve bir terminal ile ilişkiliyse true.
-u dosya: Dosya mevcutsa ve set-user-ID bayrağı ayarlanmışsa true.-w dosya: Dosya mevcutsa ve yazılabilirse true. True olması yalnızca yazma bayrağının açık olduğunu gösterir. Dosya, bu test true gösterse bile salt okunur bir dosya sisteminde yazılabilir değildir.-x dosya: Dosya mevcutsa ve yürütülebilirse true. True olması yalnızca yürütme bayrağının açık olduğunu gösterir. Eğer dosya bir dizinse, true olması dosyanın taranabileceğini (içinde arama yapılabileceğini) gösterir.-z string: string uzunluğu sıfır ise true.-L dosya: Dosya mevcutsa ve bir sembolik bağ ise true.-O dosya: Dosya mevcutsa ve sahibi bu sürecin etkin kullanıcı kimliği (effective user ID) ile eşleşiyorsa true.-G dosya: Dosya mevcutsa ve grubu bu sürecin etkin grup kimliği (effective group ID) ile eşleşiyorsa true.-S dosya: Dosya mevcutsa ve bir soket ise true.
dosya1 -nt dosya2 dosya1 mevcutsa ve dosya2'den daha yeniyse true.
dosya1 -ot dosya2 dosya1 mevcutsa ve dosya2'den daha eskiyse true.
dosya1 -ef dosya2 dosya1 ve dosya2 mevcutsa ve aynı dosyaya işaret ediyorsa true.
string string boş (null) string değilse true.
s1 = s2 s1 ve s2 string'leri aynıysa true.
s1 != s2 s1 ve s2 string'leri aynı değilse true.
s1 < s2 s1 string'i, karakterlerinin ikili (binary) değerine göre s2'den önce geliyorsa true.
s1 > s2 s1 string'i, karakterlerinin ikili (binary) değerine göre s2'den sonra geliyorsa true.
n1 -eq n2 n1 ve n2 tamsayıları cebirsel olarak eşitse true.
n1 -ne n2 n1 ve n2 tamsayıları cebirsel olarak eşit değilse true.
n1 -gt n2 n1 tamsayısı cebirsel olarak n2 tamsayısından büyükse true.
n1 -ge n2 n1 tamsayısı cebirsel olarak n2 tamsayısından büyük veya eşitse true.
n1 -lt n2 n1 tamsayısı cebirsel olarak n2 tamsayısından küçükse true.
n1 -le n2 n1 tamsayısı cebirsel olarak n2 tamsayısından küçük veya eşitse true.
Eğer dosya bir sembolik bağ ise, test aracı -h ve -L birincil öğeleri hariç olmak üzere sembolik bağı tamamen çözecek (dereference) ve ardından ifadeyi işaret edilen dosya üzerinde değerlendirecektir.
Bu birincil öğeler aşağıdaki operatörlerle birleştirilebilir:
! ifade ifade false ise true.
ifade1 -a ifade2 Hem ifade1 hem de ifade2 true ise true.
ifade1 -o ifade2 ifade1 veya ifade2'den biri true ise true.
( ifade ) ifade true ise true.
-a operatörü, -o operatöründen daha yüksek önceliğe sahiptir.
Bazı kabuklar (shells), bu araçla benzer veya özdeş olan yerleşik bir test komutu sağlayabilir. builtin(1) kılavuz sayfasına başvurun.
Dilbilgisi Belirsizliği
test dilbilgisi doğası gereği belirsizdir. Belirli bir düzeyde tutarlılık sağlamak amacıyla, IEEE Std 1003.2 (“POSIX.2”) standardının D11.2/4.62.4 bölümünde açıklanan durumlar, standart belgesinde belirtilen kurallara göre tutarlı bir şekilde değerlendirilir. Diğer tüm durumlar, komut anlambilimindeki belirsizliğe tabidir.
Özellikle, yalnızca -a, -o, ( veya ) içeren ifadeler belirsiz olabilir.
Çıkış Durumu
test aracı aşağıdaki değerlerden biriyle çıkış yapar:
0 ifade true olarak değerlendirildi.
1 ifade false olarak değerlendirildi veya ifade eksikti.
1 Bir hata oluştu.
Örnekler
Yalnızca POSIX işlevselliğini kullanarak test DOSYA1 -nt DOSYA2 komutunu uygulayın:
test -n "$(find -L -- DOSYA1 -prune -newer DOSYA2 2>/dev/null)"
Diğer zaman damgalarını karşılaştırmak için bu komut, -newerca gibi standart dışı find(1) birincil öğeleri kullanılarak değiştirilebilir.
Uyumluluk
Diğer bazı uygulamalarla uyumluluk için, = birincil öğesi aynı anlama gelecek şekilde == ile ikame edilebilir.
Ayrıca Bakınız
builtin(1), expr(1), find(1), sh(1), stat(1), symlink(7)
Standartlar
test aracı, IEEE Std 1003.2 (“POSIX.2”) spesifikasyonunun bir üst kümesini uygular. <, ==, >, -ef, -nt, -ot, -G ve -O birincil öğeleri genişletmelerdir.
Geçmiş
Version 7 AT&T UNIX ile bir test aracı ortaya çıkmıştır.
Hatalar
-a ve -o operatörlerinde her iki taraf da her zaman değerlendirilir. Örneğin, önceki ifade false olduğunu belirtmiş olsa bile dosyanın yazılabilirlik durumu aşağıdaki komut tarafından test edilecektir; bu da dosya sistemine gereksiz bir erişime neden olur: [ -z abc -a -w dosya ] Bundan kaçınmak için şunu yazın: [ -z abc ] && [ -w dosya ]