Özet
test ifade
[ ifade ]
Açıklama
test aracı, ifadeyi (expression) değerlendirir ve eğer doğru (true) olarak değerlendirilirse sıfır (doğru) çıkış durumu döndürür; aksi takdirde 1 (yanlış) döndürür. Eğer bir ifade yoksa, test yine 1 (yanlış) döndürür.
Tüm operatörler ve bayraklar, test aracına ayrı bağımsız değişkenler (arguments) olarak iletilir.
İfadeleri oluşturmak için aşağıdaki birincil ifadeler (primaries) kullanılır:
-b dosya: Dosya mevcutsa ve bir blok özel dosyası (block special file) ise doğru (true).-c dosya: Dosya mevcutsa ve bir karakter özel dosyası (character special file) ise doğru.-d dosya: Dosya mevcutsa ve bir dizin ise doğru.-e dosya: Dosya mevcutsa (türünden bağımsız olarak) doğru.-f dosya: Dosya mevcutsa ve normal bir dosya (regular file) ise doğru.-g dosya: Dosya mevcutsa ve set-group-ID bayrağı ayarlanmışsa doğru.-h dosya: Dosya mevcutsa ve bir sembolik bağ (symbolic link) ise doğru. Bu operatör, bu programın önceki sürümleriyle uyumluluk için korunmuştur. Varlığına güvenmeyin; bunun yerine -L kullanın.-k dosya: Dosya mevcutsa ve sticky biti ayarlanmışsa doğru.-n karakter_dizisi: Karakter dizisinin (string) uzunluğu sıfırdan farklıysa doğru.-p dosya: Dosya bir adlandırılmış boru hattı (named pipe - FIFO) ise doğru.-r dosya: Dosya mevcutsa ve okunabilir ise doğru.-s dosya: Dosya mevcutsa ve boyutu sıfırdan büyükse doğru.
-t dosya_tanımlayıcısı Dosya tanımlayıcısı (file descriptor) numarası dosya_tanımlayıcısı olan dosya açık ise ve bir terminal ile ilişkili ise doğru.
-u dosya: Dosya mevcutsa ve set-user-ID bayrağı ayarlanmışsa doğru.-w dosya: Dosya mevcutsa ve yazılabilir ise doğru. Doğru olması yalnızca yazma bayrağının açık olduğunu gösterir. Bu test doğru sonucunu gösterse bile, dosya salt okunur bir dosya sisteminde yazılabilir değildir.-x dosya: Dosya mevcutsa ve çalıştırılabilir ise doğru. Doğru olması yalnızca çalıştırma bayrağının açık olduğunu gösterir. Eğer dosya bir dizin ise doğru, dizinin aranabileceğini (searched) gösterir.-z karakter_dizisi: Karakter dizisinin uzunluğu sıfır ise doğru.-L dosya: Dosya mevcutsa ve bir sembolik bağ ise doğru.-O dosya: Dosya mevcutsa ve sahibi, bu işlemin etkin kullanıcı kimliği (effective user id) ile eşleşiyorsa doğru.-G dosya: Dosya mevcutsa ve grubu, bu işlemin etkin grup kimliği (effective group id) ile eşleşiyorsa doğru.-S dosya: Dosya mevcutsa ve bir soket (socket) ise doğru.
dosya1 -nt dosya2 Dosya1 mevcutsa ve dosya2'den daha yeniyse doğru.
dosya1 -ot dosya2 Dosya1 mevcutsa ve dosya2'den daha eskiyse doğru.
dosya1 -ef dosya2 Dosya1 ve dosya2 mevcutsa ve aynı dosyaya başvuruyorsa doğru.
karakter_dizisi Karakter dizisi boş (null) değilse doğru.
s1 = s2 s1 ve s2 karakter dizileri birbirinin aynısı ise doğru.
s1 != s2 s1 ve s2 karakter dizileri birbirinin aynısı değilse doğru.
s1 < s2 Karakterlerinin ikili (binary) değerine göre s1 karakter dizisi s2'den önce geliyorsa doğru.
s1 > s2 Karakterlerinin ikili değerine göre s1 karakter dizisi s2'den sonra geliyorsa doğru.
n1 -eq n2 n1 ve n2 tam sayıları cebirsel olarak eşitse doğru.
n1 -ne n2 n1 ve n2 tam sayıları cebirsel olarak eşit değilse doğru.
n1 -gt n2 n1 tam sayısı cebirsel olarak n2 tam sayısından büyükse doğru.
n1 -ge n2 n1 tam sayısı cebirsel olarak n2 tam sayısından büyük veya eşitse doğru.
n1 -lt n2 n1 tam sayısı cebirsel olarak n2 tam sayısından küçükse doğru.
n1 -le n2 n1 tam sayısı cebirsel olarak n2 tam sayısından küçük veya eşitse doğru.
Eğer dosya bir sembolik bağ ise, -h ve -L birincil ifadeleri hariç olmak üzere, test bu bağı tamamen çözecektir (dereference) ve ardından ifadeyi başvurulan dosya üzerinde değerlendirecektir.
Bu birincil ifadeler aşağıdaki operatörlerle birleştirilebilir:
! ifade ifade yanlış (false) ise doğru.
ifade1 -a ifade2 Hem ifade1 hem de ifade2 doğruysa doğru.
ifade1 -o ifade2 ifade1 veya ifade2'den biri doğruysa doğru.
( ifade ) ifade doğruysa doğru.
-a operatörü, -o operatöründen daha yüksek önceliğe sahiptir.
Bazı kabuklar, bu araca benzer veya bununla aynı olan yerleşik (builtin) 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 tutarlılık düzeyi 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 sonlanır:
0 ifade doğru olarak değerlendirildi.
1 ifade yanlış olarak değerlendirildi veya ifade eksik.
1 Bir hata oluştu.
Örnekler
Yalnızca POSIX işlevselliğini kullanarak test DOSYA1 -nt DOSYA2 ifadesini uygulayın:
test -n "$(find -L -- DOSYA1 -prune -newer DOSYA2 2>/dev/null)"
Bu, diğer zaman damgalarını karşılaştırmak amacıyla -newerca gibi standart dışı find(1) birincil ifadeleri kullanılarak değiştirilebilir.
Uyumluluk
Bazı diğer uygulamalarla uyumluluk sağlamak amacıyla, = birincil ifadesi aynı anlama gelecek şekilde == ile değiştirilebilir.
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”) belirtiminin bir üst kümesini uygular. <, ==, >, -ef, -nt, -ot, -G ve -O birincil ifadeleri birer genişletmedir.
Geçmiş
Bir test aracı, Version 7 AT&T UNIX ile ortaya çıkmıştır.
Hatalar
-a ve -o operatörlerinde her iki taraf da her zaman değerlendirilir. Örneğin, önceki ifade yanlış olduğunu gösterse bile, dosyanın yazılabilir olup olmadığı 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 ]
macOS 26.4 October 5, 2016 macOS 26.4