Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen testposix komutudur.
Program:
ADI
test — ifadeyi değerlendir
SİNOPSİS
test [ifade]
[ [ifade] ]
TANIM
The test kamu hizmeti değerlendirecektir ifade ve değerlendirmenin sonucunu belirtin
çıkış durumuna göre. Sıfır çıkış durumu, ifadenin doğru olarak değerlendirildiğini gösterir.
ve 1 çıkış durumu, ifadenin yanlış olarak değerlendirildiğini gösterir.
Kullanan yardımcı programın ikinci biçiminde "[]" ziyade test, uygulama
köşeli parantezlerin ayrı argümanlar olduğundan emin olun.
SEÇENEKLER
The test yardımcı programı tanımaz "--" tarafından belirtilen şekilde argüman
POSIX.10‐1'in Temel Tanımlar cildindeki Kılavuz İlke 2008, Bölüm 12.2, Yarar Sözdizimi
Kuralları.
Hiçbir seçenek desteklenmeyecektir.
İŞLENENLER
Uygulama, tüm operatörlerin ve birincil öğelerin öğelerinin aşağıdaki gibi sunulmasını sağlayacaktır.
ayrı argümanlar test Yarar.
Aşağıdaki primerler oluşturmak için kullanılabilir ifade:
-b yol adı
Doğru ise yol adı özel bir blok için mevcut dizin girişini çözer
dosya. yanlış ise yol adı çözülemez veya yol adı çözer
blok özel dosyası olmayan bir dosya için mevcut dizin girişi.
-c yol adı
Doğru ise yol adı özel bir karakter için mevcut bir dizin girişini çözer
dosya. yanlış ise yol adı çözülemez veya yol adı çözer
karakter özel dosyası olmayan bir dosya için mevcut dizin girişi.
-d yol adı
Doğru ise yol adı bir dizin için mevcut bir dizin girişini çözer. YANLIŞ
if yol adı çözülemez veya yol adı mevcut bir dizine çözümlenir
dizin olmayan bir dosya için giriş.
-e yol adı
Doğru ise yol adı mevcut bir dizin girişini çözer. yanlış ise yol adı
Çözülemez.
-f yol adı
Doğru ise yol adı normal bir dosya için mevcut bir dizin girişini çözer.
yanlış ise yol adı çözülemez veya yol adı mevcut bir çözüme
normal bir dosya olmayan bir dosya için dizin girişi.
-g yol adı
Doğru ise yol adı sahip bir dosya için mevcut bir dizin girişini çözer.
set-group-ID bayrak seti. yanlış ise yol adı çözülemez veya yol adı
ayarına sahip olmayan bir dosya için mevcut bir dizin girişini çözer.
grup kimliği bayrak seti.
-h yol adı
Doğru ise yol adı sembolik bir bağlantı için mevcut bir dizin girişini çözer.
yanlış ise yol adı çözülemez veya yol adı mevcut bir çözüme
sembolik bağlantı olmayan bir dosya için dizin girişi. Son bileşen ise
of yol adı sembolik bir bağdır, bu sembolik bağ izlenmez.
-L yol adı
Doğru ise yol adı sembolik bir bağlantı için mevcut bir dizin girişini çözer.
yanlış ise yol adı çözülemez veya yol adı mevcut bir çözüme
sembolik bağlantı olmayan bir dosya için dizin girişi. Son bileşen ise
of yol adı sembolik bir bağdır, bu sembolik bağ izlenmez.
-n dizi uzunluğu ise doğrudur dizi sıfır değildir; aksi halde yanlış.
-p yol adı
Doğru ise yol adı bir FIFO için mevcut bir dizin girişini çözer. yanlış ise
yol adı çözülemez veya yol adı mevcut bir dizine çözümlenir
FIFO olmayan bir dosya için giriş.
-r yol adı
Doğru ise yol adı bir dosya için mevcut bir dizin girişini çözer.
içinde tanımlandığı gibi dosyadan okuma izni verilecektir. Bölüm 1.1.1.4,
fileto Okumak, Yazmak, ve Yaratılış. yanlış ise yol adı çözülemez veya
yol adı izin verilen bir dosya için mevcut bir dizin girişini çözer
dosyadan okuma izni verilmeyecektir.
-S yol adı
Doğru ise yol adı bir soket için mevcut bir dizin girişini çözer. yanlış ise
yol adı çözülemez veya yol adı mevcut bir dizine çözümlenir
soket olmayan bir dosya için giriş.
-s yol adı
Doğru ise yol adı içeren bir dosya için mevcut bir dizin girişini çözer.
sıfırdan büyük boyut. yanlış ise yol adı çözülemez veya yol adı
boyutu olmayan bir dosya için mevcut bir dizin girişini çözer
sıfırdan büyük.
-t dosya_tanımlayıcı
Dosya tanımlayıcı numarası doğruysa dosya_tanımlayıcı açık ve bir ile ilişkili
terminal. yanlış ise dosya_tanımlayıcı geçerli bir dosya tanımlayıcı numarası değilse veya
dosya tanımlayıcı numarası dosya_tanımlayıcı açık değilse veya açıksa ancak açık değilse
bir terminal ile ilişkilidir.
-u yol adı
Doğru ise yol adı sahip bir dosya için mevcut bir dizin girişini çözer.
set-user-ID bayrak seti. yanlış ise yol adı çözülemez veya yol adı
ayarına sahip olmayan bir dosya için mevcut bir dizin girişini çözer.
kullanıcı kimliği bayrak seti.
-w yol adı
Doğru ise yol adı bir dosya için mevcut bir dizin girişini çözer.
içinde tanımlandığı gibi dosyaya yazma izni verilecektir. Bölüm 1.1.1.4,
fileto Okumak, Yazmak, ve Yaratılış. yanlış ise yol adı çözülemez veya
yol adı izin verilen bir dosya için mevcut bir dizin girişini çözer
dosyaya yazma izni verilmeyecektir.
-x yol adı
Doğru ise yol adı bir dosya için mevcut bir dizin girişini çözer.
dosyayı yürütme (veya bir dizinse arama) izni
tanımlandığı gibi verilen Bölüm 1.1.1.4, fileto Okumak, Yazmak, ve Yaratılış. YANLIŞ
if yol adı çözülemez veya yol adı mevcut bir dizine çözümlenir
dosyayı yürütme (veya arama) izninin verilmeyeceği bir dosya için giriş
verilsin.
-z dizi Dizenin uzunluğu doğruysa dizi sıfır; aksi halde yanlış.
dizi dize ise doğru dizi boş dize değil; aksi halde yanlış.
s1 = s2 Dizeler doğruysa s1 ve s2 Özdeş; aksi halde yanlış.
s1 != s2 Dizeler doğruysa s1 ve s2 özdeş değildir; aksi halde yanlış.
n1 -eq n2 Tamsayılar doğruysa n1 ve n2 cebirsel olarak eşittir; aksi halde yanlış.
n1 -ne n2 Tamsayılar doğruysa n1 ve n2 cebirsel olarak eşit değildir; aksi halde yanlış.
n1 -gt n2 Tamsayı ise doğru n1 tamsayıdan cebirsel olarak daha büyüktür n2; aksi takdirde,
yanlış.
n1 -ge n2 Tamsayı ise doğru n1 cebirsel olarak tamsayıdan büyük veya ona eşittir n2;
aksi halde yanlış.
n1 -lt n2 Tamsayı ise doğru n1 cebirsel olarak tam sayıdan küçüktür n2; aksi takdirde,
yanlış.
n1 -le n2 Tamsayı ise doğru n1 cebirsel olarak tamsayıdan küçük veya ona eşittir n2;
aksi halde yanlış.
ifade1 -a ifade2
Her ikisi de doğruysa ifade1 ve ifade2 Doğrudur; aksi halde yanlış. bu -a
ikili birincil sol ilişkiseldir. Şundan daha yüksek bir önceliğe sahiptir -o.
ifade1 -o ifade2
Ya doğruysa ifade1 or ifade2 doğru; aksi halde yanlış. bu -o
ikili birincil sol ilişkiseldir.
Hariç -h yol adı ve -L yol adı ön seçimler, eğer bir yol adı argüman
sembolik bağ, test sembolik bağı çözerek ifadeyi değerlendirecek ve
bağlantı tarafından başvurulan dosyayı kullanarak.
Bu birinciller aşağıdaki operatörlerle birleştirilebilir:
! ifade
Doğru ise ifade yanlış. yanlış ise ifade doğru.
( ifade )
Doğru ise ifade doğru. yanlış ise ifade yanlış. parantezler olabilir
normal önceliği ve ilişkilendirilebilirliği değiştirmek için kullanılır.
Formun iki öğesi olan birinciller:
-birincil_operatör birincil_işlenen
olarak bilinir birli ön seçimler. İkisinden birinde üç elemanlı birinciller
formlar:
birincil_işlenen -birincil_operatör birincil_işlenen
birincil_işlemci birincil_işlemci birincil_işlemci
olarak bilinir ikili ön seçimler. Ek uygulama tanımlı operatörler ve
birincil_operatöruygulamalarla sağlanabilir. Şu şekilde olacaklar -Şebeke
ilk karakter nerede Şebeke rakam değildir.
Operatörlerin önceliğini ve dönüş değerini belirleyen algoritma
oluşturulacak, sunulan argümanların sayısına dayanmaktadır. test. (Ancak, ne zaman
ile "[...]" Biçimlendirmek nihai argüman sayılmaz
Bu algoritma.)
Aşağıdaki listede $1, $2, $3 ve $4 verilen argümanları temsil etmektedir. test:
0 argüman:
Yanlış (1) çıkın.
1 bağımsız değişken: $0 boş değilse, true (1)'dan çıkın; aksi halde false olarak çıkın.
2 argüman:
* 1$ ise '!', 2$ boşsa true, 2$ boş değilse false çıkın.
* $1 tekli birincil ise, tekli test doğruysa true'dan, yanlışsa false'tan çıkın
tekli test yanlıştır.
* Aksi takdirde, belirtilmemiş sonuçlar üretin.
3 argüman:
* $2 ikili birincil ise, $1 ve $3 ikili testini gerçekleştirin.
* 1$ ise '!', 2$ ve 3$'lık iki bağımsız değişken testini reddedin.
* 1$ ise '(' ve 3 dolar ')', 2 dolarlık tekli testi gerçekleştirin. olan sistemlerde
XSI seçeneğini desteklemez, $1 ise sonuçlar belirtilmez. '('
ve 3 dolar ')'.
* Aksi takdirde, belirtilmemiş sonuçlar üretin.
4 argüman:
* 1$ ise '!', 2, 3 ve 4 dolarlık üç bağımsız değişken testini reddedin.
* 1$ ise '(' ve 4 dolar ')', 2$ ve 3$'lık iki bağımsız değişken testini gerçekleştirin.
XSI seçeneğini desteklemeyen sistemlerde sonuçlar belirtilmemiştir.
1 dolar ise '(' ve 4 dolar ')'.
* Aksi takdirde sonuçlar belirtilmemiştir.
>4 argüman:
Sonuçlar belirtilmemiş.
XSI uyumlu sistemlerde, birincil ve operatör kombinasyonları
daha önce açıklanan öncelik ve ilişkilendirme kuralları kullanılarak değerlendirilir.
Ayrıca, dize karşılaştırma ikili birincilleri '=' ve "!=" sahip olacak
herhangi bir tekli birincilden daha yüksek öncelik.
STDIN
Kullanılmamış.
GİRİŞ DOSYALAR
Yok.
ÇEVRE DEĞİŞKENLER
Aşağıdaki ortam değişkenleri, aşağıdakilerin yürütülmesini etkiler: test:
DİL Ayarlanmamış veya ayarlanmamış uluslararasılaştırma değişkenleri için varsayılan bir değer sağlayın.
boş. (Bkz. POSIX.1‐2008'in Temel Tanımlar cildi, Bölüm 8.2,
Uluslararasılaşma Değişkenler uluslararasılaşmanın önceliği için
yerel kategorilerin değerlerini belirlemek için kullanılan değişkenler.)
LC_ALL Boş olmayan bir dize değerine ayarlanırsa, diğer tüm değerlerin değerlerini geçersiz kılın
uluslararasılaştırma değişkenleri.
LC_CTYPE Metin verisi bayt dizilerinin yorumlanması için yerel ayarı belirleyin
karakter olarak (örneğin, çoklu bayt karakterlerin aksine tek bayt
argümanlar).
LC_MESSAGES
biçimini ve içeriğini etkilemek için kullanılması gereken yerel ayarı belirleyin.
standart hataya yazılan teşhis mesajları.
NLSPATH İşleme için mesaj kataloglarının yerini belirleyin. LC_MESSAGES.
ASENKRON ETKİNLİKLER
Varsayılan.
STDOUT
Kullanılmamış.
STDER
Standart hata sadece teşhis mesajları için kullanılacaktır.
ÇIKTI DOSYALAR
Yok.
GENİŞLETİLMİŞ TANIM
Yok.
EXIT DURUMU
Aşağıdaki çıkış değerleri döndürülecektir:
0 ifade doğru olarak değerlendirilir.
1 ifade yanlış olarak değerlendirildi veya ifade eksikti.
>1 Bir hata oluştu.
SONUÇLARI OF HATALAR
Varsayılan.
The takip etme bölümler vardır bilgilendirici.
BAŞVURUSU KULLANIM
belirten XSI uzantıları -a ve -o ikili birinciller ve '(' ve ')' operatörler
eskimiş olarak işaretlendi. (Bunları kullanan birçok ifade,
Değerlendirilmekte olan belirli ifadelere bağlı olarak dilbilgisi.) Bunları kullanan komut dosyaları
ifadeler aşağıda verilen biçimlere dönüştürülmelidir. birçok uygulamaya rağmen
bu eskimiş formları desteklemeye devam edecek, komut dosyaları ne zaman son derece dikkatli olmalıdır
bunlar ve diğer birincillerle karıştırılabilecek kullanıcı tarafından sağlanan girdilerle ilgilenmek ve
operatörler. Uygulama geliştiricisi, uygulamaya girdi üreten tüm durumları bilmedikçe
komut dosyası, aşağıdaki gibi çağrılar:
test "1 $" -a "2 $"
şu şekilde yazılmalıdır:
test "1 $" && test "2 $"
bir kullanıcı 1 $ gibi değerler sağlarsa sorunları önlemek için '!' ve 2 $ null olarak ayarlandı
sicim. Yani, maksimum taşınabilirliğin söz konusu olduğu durumlarda, şunları değiştirin:
test ifade1 -a ifade2
ile:
test ifade1 && test ifade2
ve değiştirin:
test ifade1 -o ifade2
ile:
test ifade1 || test ifade2
ama unutmayın ki, içinde test, -a önceliğinden daha yüksek -o süre "&&" ve "||" eşit olmak
kabukta öncelik.
Gruplamayı gerçekleştirmek için kabuk komut dilinde parantezler veya parantezler kullanılabilir.
Kullanılırken parantezlerden kaçınılmalıdır sh; Örneğin:
test \( ifade1 -a ifade2 \) -o ifade3
Bu komut, aşağıdakilere bağlı olarak XSI uyumlu sistemlerde bile her zaman taşınabilir değildir.
tarafından belirtilen ifadeler İfade1, İfade2 ve İfade3. Bunun yerine aşağıdaki form kullanılabilir:
( test ifade1 && test ifade2 ) || test ifade3
İki komut:
test "1 $"
test ! "1 $"
bazı tarihsel sistemlerde güvenilir bir şekilde kullanılamadı. Beklenmeyen sonuçlar ortaya çıkarsa
böyle bir dizi ifadesi kullanıldı ve $1 genişletildi '!', '('veya bilinen bir tekli birincil.
Daha iyi yapılar:
test -n "1 $"
test -z "1 $"
respectivamente.
Ortak yapı göz önüne alındığında, tarihsel sistemler de güvenilmez olmuştur:
test "$yanıt" = "beklenen sicim"
Aşağıdakilerden biri daha güvenilir bir formdur:
test "X$yanıt" = "beklenen sicim"
test "beklenen sicim" = "$yanıt"
İkinci formun varsaydığına dikkat edin beklenen dizi hiçbiriyle karıştırılamaz
tekli birincil. Eğer beklenen dizi ile başlar '-', '(', '!', ya da '=', ilk form
yerine kullanılmalıdır. XSI işaretli uzantılar olmadan önceki kuralları kullanarak, herhangi bir
Herhangi bir girdi verildiğinde, üç karşılaştırma formundan güvenilirdir. (Ancak unutmayın ki,
dizeler her durumda alıntılanır.)
Çünkü dize karşılaştırma ikili birincilleri, '=' ve "!=", daha yüksek önceliğe sahip
4'ten büyük bağımsız değişken durumunda herhangi bir tekli birincilden daha fazla, beklenmeyen sonuçlar ortaya çıkabilir
argümanlar uygun şekilde hazırlanmadıysa. Örneğin:
test -d $1 -o -d $2
$1 olası bir dizin adını değerlendirirse '=', ilk üç argüman
ikinci olduğunda bir sözdizimi hatasına neden olacak bir dize karşılaştırması olarak kabul edilir. -d is
karşılaşıldı. Aşağıdaki formlardan biri bunu engeller; ikincisi tercih edilir:
test \( -d "1 $" \) -o \( -d "2 $" \)
test -d "1 $" || test -d "2 $"
Ayrıca 4'ten büyük argüman durumunda:
test "1 $" = "Yarasa" -a "2 $" = "Top"
$1 olarak değerlendirilirse sözdizimi hataları oluşur '(' or '!'. Aşağıdaki formlardan biri şunları engeller:
Bugün nasılsın; üçüncüsü tercih edilir:
test "X$1" = "Xbat" -a "X$2" = "Xball"
test "1 $" = "Yarasa" && test "2 $" = "Top"
test "X$1" = "Xbat" && test "X$2" = "Xball"
ÖRNEKLER
1. İki veya üç argüman yoksa (iki varyasyon) çıkın:
if [ $# -ne 2 ] && [ $# -ne 3 ]; sonra çıkış 1; fi
if [ $# -lt 2 ] || [ $# -gt 3 ]; sonra çıkış 1; fi
2. Bir mkdir bir dizin yoksa:
test ! -d geçici && mkdir geçici
3. Bir dosyanın okunamaz hale gelmesini bekleyin:
süre test -r dosya
do
uyku 30
yapılmış
kaçırmak '"dosya" is yok hayır uzun okunabilir'
4. Argüman üç dizeden biriyse (iki varyasyon) bir komut gerçekleştirin:
if [ "1 $" = "armut" ] || [ "1 $" = "üzüm" ] || [ "1 $" = "elma" ]
sonra
komuta
fi
durumda "$ 1"
armut|üzüm|elma) komuta ;;
esac
GEREKÇESİ
KornShell'den türetilen koşullu komut (çift parantez [[]]) kabuktan çıkarıldı
erken bir teklifte komut dili açıklaması. Gerçek olduğuna dair itirazlar yapıldı.
sorun yanlış kullanım test komut ([) ve onu kabuğa koymak yanlış yoldur
sorunu çözmek için. Bunun yerine, uygun belgeler ve yeni bir kabuk ayrılmış Word (!)
yeterli.
Birden fazla gerektiren testler test işlemler kullanılarak kabuk düzeyinde yapılabilir
bireysel çağrılar test kullanmak yerine komut ve kabuk mantıksal
hataya açık -o bayrağı test.
XSI uyumlu sistemler dörtten fazla argümanı destekler.
XSI uyumlu sistemler, birincillerin aşağıdaki yapılarla birleştirilmesini destekler:
ifade1 -a ifade2
Her ikisi de doğruysa ifade1 ve ifade2 Doğrudur.
ifade1 -o ifade2
En az biri doğruysa ifade1 ve ifade2 Doğrudur.
( ifade )
Doğru ise ifade doğru.
Bu daha karmaşık birleşik ifadeleri değerlendirirken, aşağıdaki öncelik kuralları şunlardır:
kullandı:
* Birli birinciller, cebirsel ikili birincillerden daha yüksek önceliğe sahiptir.
* Birli birinciller, dize ikili birincillerinden daha düşük önceliğe sahiptir.
* Birli ve ikili birinciller, birliden daha yüksek önceliğe sahiptir dizi birincil.
* ! operatöründen daha yüksek önceliğe sahiptir. -a operatör ve -a operatör var
göre daha yüksek öncelik -o operatörü.
* -a ve -o operatörler ilişkisel bırakılır.
* Parantezler, normal önceliği ve ilişkilendirilebilirliği değiştirmek için kullanılabilir.
BSD ve System V sürümleri -f aynı değiller. BSD tanımı şuydu:
-f dosya Doğru ise dosya var ve bir dizin değil.
Bunun için SVID sürümü (dosya varsa ve normal bir dosyaysa doğrudur) seçilmiştir.
POSIX.1‐2008 hacmi, çünkü kullanımı -b, -c, -d, ve -p operandlar
(dosya vardır ve belirli bir dosya türüdür).
The -e C kabuğu tarafından sağlanana benzer işlevselliğe sahip birincil,
bir kabuk betiğinin bir dosyanın var olup olmadığını öğrenmesinin tek yolunu sağladığı için eklendi
dosyayı açmaya çalışmadan. Uygulamaların ek dosya eklemesine izin verildiğinden
türler, taşınabilir bir komut dosyası şunları kullanamaz:
test -b foo -o -c foo -o -d foo -o -f foo -o -p foo
olup olmadığını öğrenmek için foo mevcut bir dosyadır. Tarihsel BSD sistemlerinde, bir dosyanın varlığı
tarafından belirlenebilir:
test -f foo -o -d foo
ancak mevcut bir dosyanın normal bir dosya olduğunu belirlemenin kolay bir yolu yoktu. erken
teklif KornShell kullandı -a birincil (aynı anlamda), ancak bu değiştirildi -e
çünkü insanların aklını karıştırma olasılığının yüksek olduğuna dair endişeler vardı. -a birincil
ile -a ikili operatör.
Aşağıdaki seçenekler, POSIX.1‐2008'in bu cildine dahil edilmemiştir, ancak
bazı uygulamalar tarafından sağlanmaktadır. Bu işlenenler yeni uygulamalar tarafından kullanılmamalıdır
diğer amaçlar için:
-k dosya Doğru ise dosya var ve yapışkan biti ayarlandı.
-C dosya Doğru ise dosya bitişik bir dosyadır.
-V dosya Doğru ise dosya bir sürüm dosyasıdır.
Aşağıdaki seçenek çoğu uygulamada belgelenmediği için dahil edilmedi,
(Sistem V dahil) bazı uygulamalardan kaldırıldı ve işlevsellik
kabuk tarafından sağlanır (bkz. Bölüm 2.6.2, Parametre Genişleme.
-l dizi dize uzunluğu dizi.
The -b, -c, -g, -p, -u, ve -x işlenenler SVID'den türetilir; tarihsel BSD
onları temin etmek. bu -k işlenen, Sistem V'den türetilmiştir; tarihsel BSD bunu sağlamaz.
Tarihsel BSD sistemlerinde, test -w rehber her zaman false döndürdü çünkü test denedi
her zaman başarısız olan yazma dizini açın.
Yeni icat edilen veya KornShell'den bazı ek birinciller erken bir tarihte ortaya çıktı.
koşullu komutun bir parçası olarak teklif ([[]]): s1 > s2, s1 < s2, str = model, str
!= model, f1 -nt f2, f1 -ot f2, ve f1 -ef f2. İçeriye taşınmadılar
test koşullu komut kabuktan kaldırıldığında yardımcı program, çünkü
dahil edildi test tarihsel uygulamalarına yerleştirilmiş yardımcı program sh Yarar.
The -t dosya_tanımlayıcı dilbilgisi olduğundan birincil zorunlu bir argümanla gösterilir
atlanabilirse belirsizdir. Tarihsel uygulamalar ihmal edilmesine izin verdi,
1 varsayılan sağlar.
not edilir ki '[' taşınabilir dosya adı karakter kümesinin bir parçası değildir; bununla birlikte, o zamandan beri
tek bir bayt ile kodlanması gerekir ve taşınabilir karakter kümesinin bir parçasıdır,
Bu yardımcı programın adı, desteklenen tüm yerel ayarlarda bir karakter dizisi oluşturur.
GELECEK TARİFİ
Yok.
onworks.net hizmetlerini kullanarak testposix'i çevrimiçi kullanın