Đây là lệnh testposix có thể chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình giả lập trực tuyến MAC OS
CHƯƠNG TRÌNH:
TÊN
kiểm tra - đánh giá biểu hiện
SYNOPSIS
thử nghiệm [biểu hiện]
[ [biểu hiện] ]
MÔ TẢ
Sản phẩm thử nghiệm tiện ích sẽ đánh giá biểu hiện và cho biết kết quả đánh giá
bởi trạng thái thoát của nó. Trạng thái thoát bằng XNUMX cho biết rằng biểu thức được đánh giá là đúng
và trạng thái thoát là 1 cho biết rằng biểu thức được đánh giá là sai.
Trong dạng thứ hai của tiện ích, sử dụng "[]" chứ không phải là thử nghiệm, ứng dụng sẽ
đảm bảo rằng các dấu ngoặc vuông là các đối số riêng biệt.
LỰA CHỌN
Sản phẩm thử nghiệm tiện ích sẽ không nhận ra "−−" đối số theo cách được chỉ định bởi
Hướng dẫn 10 trong tập Định nghĩa cơ bản của POSIX.1‐2008, Phần 12.2, Tiện ích cú pháp
Hướng dẫn.
Không có tùy chọn nào được hỗ trợ.
TOÁN HẠNG
Ứng dụng phải đảm bảo rằng tất cả các toán tử và các phần tử của các cuộc bầu cử sơ bộ được trình bày như
các đối số riêng biệt cho thử nghiệm tiện ích.
Các số liệu chính sau đây có thể được sử dụng để xây dựng biểu hiện:
−b tên đường dẫn
Đúng nếu tên đường dẫn giải quyết vi phạm mục nhập thư mục hiện có cho một khối đặc biệt
tập tin. Sai nếu tên đường dẫn không thể được giải quyết, hoặc nếu tên đường dẫn giải quyết cho một
mục nhập thư mục hiện có cho một tệp không phải là một tệp đặc biệt của khối.
−c tên đường dẫn
Đúng nếu tên đường dẫn giải quyết một mục nhập thư mục hiện có cho một ký tự đặc biệt
tập tin. Sai nếu tên đường dẫn không thể được giải quyết, hoặc nếu tên đường dẫn giải quyết cho một
mục nhập thư mục hiện có cho một tệp không phải là một tệp ký tự đặc biệt.
−d tên đường dẫn
Đúng nếu tên đường dẫn giải quyết một mục nhập thư mục hiện có cho một thư mục. Sai
if tên đường dẫn không thể được giải quyết, hoặc nếu tên đường dẫn giải quyết cho một thư mục hiện có
mục nhập cho một tệp không phải là một thư mục.
−e tên đường dẫn
Đúng nếu tên đường dẫn giải quyết một mục nhập thư mục hiện có. Sai nếu tên đường dẫn
không thể giải quyết.
−f tên đường dẫn
Đúng nếu tên đường dẫn giải quyết một mục nhập thư mục hiện có cho một tệp thông thường.
Sai nếu tên đường dẫn không thể được giải quyết, hoặc nếu tên đường dẫn giải quyết một hiện tại
mục nhập thư mục cho một tệp không phải là một tệp thông thường.
−g tên đường dẫn
Đúng nếu tên đường dẫn giải quyết một mục nhập thư mục hiện có cho một tệp có
set-group-ID flag set. Sai nếu tên đường dẫn không thể được giải quyết, hoặc nếu tên đường dẫn
giải quyết một mục nhập thư mục hiện có cho một tệp không có thiết lập của nó-
cờ nhóm-ID đã đặt.
−h tên đường dẫn
Đúng nếu tên đường dẫn giải quyết một mục nhập thư mục hiện có cho một liên kết tượng trưng.
Sai nếu tên đường dẫn không thể được giải quyết, hoặc nếu tên đường dẫn giải quyết một hiện tại
mục nhập thư mục cho một tệp không phải là một liên kết tượng trưng. Nếu thành phần cuối cùng
of tên đường dẫn là một liên kết tượng trưng, liên kết tượng trưng đó không được tuân theo.
−L tên đường dẫn
Đúng nếu tên đường dẫn giải quyết một mục nhập thư mục hiện có cho một liên kết tượng trưng.
Sai nếu tên đường dẫn không thể được giải quyết, hoặc nếu tên đường dẫn giải quyết một hiện tại
mục nhập thư mục cho một tệp không phải là một liên kết tượng trưng. Nếu thành phần cuối cùng
of tên đường dẫn là một liên kết tượng trưng, liên kết tượng trưng đó không được tuân theo.
−n chuỗi Đúng nếu độ dài của chuỗi là khác XNUMX; ngược lại, sai.
−p tên đường dẫn
Đúng nếu tên đường dẫn giải quyết một mục nhập thư mục hiện có cho một FIFO. Sai nếu
tên đường dẫn không thể được giải quyết, hoặc nếu tên đường dẫn giải quyết cho một thư mục hiện có
mục nhập cho tệp không phải là FIFO.
−r tên đường dẫn
Đúng nếu tên đường dẫn giải quyết một mục nhập thư mục hiện có cho một tệp mà
quyền đọc từ tệp sẽ được cấp, như được định nghĩa trong Phần 1.1.1.4,
Tập tin Đọc, Viết, và Sáng tạo. Sai nếu tên đường dẫn không thể được giải quyết, hoặc nếu
tên đường dẫn giải quyết một mục nhập thư mục hiện có cho một tệp mà quyền đó
để đọc từ tệp sẽ không được cấp.
−S tên đường dẫn
Đúng nếu tên đường dẫn giải quyết một mục nhập thư mục hiện có cho một ổ cắm. Sai nếu
tên đường dẫn không thể được giải quyết, hoặc nếu tên đường dẫn giải quyết cho một thư mục hiện có
mục nhập cho tệp không phải là ổ cắm.
−s tên đường dẫn
Đúng nếu tên đường dẫn giải quyết một mục nhập thư mục hiện có cho một tệp có
kích thước lớn hơn không. Sai nếu tên đường dẫn không thể được giải quyết, hoặc nếu tên đường dẫn
giải quyết một mục nhập thư mục hiện có cho một tệp không có kích thước
lớn hơn không.
−t file_descriptor
Đúng nếu số bộ mô tả tệp file_descriptor mở và được liên kết với
phần cuối. Sai nếu file_descriptor không phải là số bộ mô tả tệp hợp lệ hoặc nếu
số bộ mô tả tệp file_descriptor không mở, hoặc nếu nó mở nhưng không
liên kết với một thiết bị đầu cuối.
−u tên đường dẫn
Đúng nếu tên đường dẫn giải quyết một mục nhập thư mục hiện có cho một tệp có
bộ cờ set-user-ID. Sai nếu tên đường dẫn không thể được giải quyết, hoặc nếu tên đường dẫn
giải quyết một mục nhập thư mục hiện có cho một tệp không có thiết lập của nó-
cờ user-ID đã đặt.
−w tên đường dẫn
Đúng nếu tên đường dẫn giải quyết một mục nhập thư mục hiện có cho một tệp mà
quyền ghi vào tệp sẽ được cấp, như được định nghĩa trong Phần 1.1.1.4,
Tập tin Đọc, Viết, và Sáng tạo. Sai nếu tên đường dẫn không thể được giải quyết, hoặc nếu
tên đường dẫn giải quyết một mục nhập thư mục hiện có cho một tệp mà quyền đó
để ghi vào tệp sẽ không được cấp.
−x tên đường dẫn
Đúng nếu tên đường dẫn giải quyết một mục nhập thư mục hiện có cho một tệp mà
quyền thực thi tệp (hoặc tìm kiếm nó, nếu nó là một thư mục) sẽ được
được cấp, như được định nghĩa trong Phần 1.1.1.4, Tập tin Đọc, Viết, và Sáng tạo. Sai
if tên đường dẫn không thể được giải quyết, hoặc nếu tên đường dẫn giải quyết cho một thư mục hiện có
mục nhập cho tệp mà quyền thực thi (hoặc tìm kiếm) tệp sẽ không
được cấp.
−z chuỗi Đúng nếu độ dài của chuỗi chuỗi là số không; ngược lại, sai.
chuỗi Đúng nếu chuỗi chuỗi không phải là chuỗi null; ngược lại, sai.
s1 = s2 Đúng nếu các chuỗi s1 và s2 là giống hệt nhau; ngược lại, sai.
s1 != s2 Đúng nếu các chuỗi s1 và s2 không giống nhau; ngược lại, sai.
n1 −eq n2 Đúng nếu các số nguyên n1 và n2 là bằng nhau về mặt đại số; ngược lại, sai.
n1 −ne n2 Đúng nếu các số nguyên n1 và n2 không bằng nhau về mặt đại số; ngược lại, sai.
n1 −gt n2 Đúng nếu số nguyên n1 lớn hơn về mặt đại số so với số nguyên n2; nếu không thì,
sai.
n1 −ge n2 Đúng nếu số nguyên n1 về mặt đại số lớn hơn hoặc bằng số nguyên n2;
ngược lại, sai.
n1 −lt n2 Đúng nếu số nguyên n1 về mặt đại số nhỏ hơn số nguyên n2; nếu không thì,
sai.
n1 −le n2 Đúng nếu số nguyên n1 về mặt đại số nhỏ hơn hoặc bằng số nguyên n2;
ngược lại, sai.
biểu thức1 −a biểu thức2
Đúng nếu cả hai biểu thức1 và biểu thức2 là sự thật; ngược lại, sai. Các −a
nhị phân chính là kết hợp trái. Nó có mức độ ưu tiên cao hơn −o.
biểu thức1 −o biểu thức2
Đúng nếu một trong hai biểu thức1 or biểu thức2 là đúng; ngược lại, sai. Các −o
nhị phân chính là kết hợp trái.
Ngoại trừ −h tên đường dẫn và −L tên đường dẫn bầu cử sơ bộ, nếu a tên đường dẫn đối số là
một liên kết tượng trưng, thử nghiệm sẽ đánh giá biểu thức bằng cách giải quyết liên kết tượng trưng và
bằng cách sử dụng tệp được tham chiếu bởi liên kết.
Các số liệu chính này có thể được kết hợp với các toán tử sau:
! biểu hiện
Đúng nếu biểu hiện là sai. Sai nếu biểu hiện là đúng.
( biểu hiện )
Đúng nếu biểu hiện là đúng. Sai nếu biểu hiện là sai. Dấu ngoặc đơn có thể là
được sử dụng để thay đổi mức độ ưu tiên thông thường và tính liên kết.
Các phiếu bầu sơ bộ với hai phần tử của biểu mẫu:
-người điều hành chính toán hạng chính
được biết đến như một ngôi bầu cử sơ bộ. Các cuộc bầu cử sơ bộ có ba phần tử ở một trong hai phần tử
các hình thức:
toán hạng chính -người điều hành chính toán hạng chính
primary_operand primary_operand
được biết đến như nhị phân bầu cử sơ bộ. Các toán tử bổ sung do triển khai xác định và
người điều hành chínhs có thể được cung cấp bởi các triển khai. Chúng sẽ có dạng -nhà điều hành
nơi ký tự đầu tiên của nhà điều hành không phải là một chữ số.
Thuật toán xác định mức độ ưu tiên của các toán tử và giá trị trả về
sẽ được tạo ra dựa trên số lượng các đối số được trình bày cho thử nghiệm. (Tuy nhiên, khi
bằng cách sử dụng "[...]" hình thức, đối số cuối cùng sẽ không được tính vào
thuật toán này.)
Trong danh sách sau, $ 1, $ 2, $ 3 và $ 4 đại diện cho các đối số được trình bày cho thử nghiệm:
0 đối số:
Thoát sai (1).
1 đối số: Thoát true (0) nếu $ 1 không rỗng; nếu không, thoát khỏi false.
2 đối số:
* Nếu $ 1 là '!', thoát true nếu $ 2 rỗng, false nếu $ 2 không rỗng.
* Nếu $ 1 là giá trị chính một bậc, thoát ra true nếu kiểm tra một bậc là đúng, sai nếu
kiểm tra một lần là sai.
* Nếu không, tạo ra kết quả không xác định.
3 đối số:
* Nếu $ 2 là số chính nhị phân, hãy thực hiện kiểm tra nhị phân của $ 1 và $ 3.
* Nếu $ 1 là '!', phủ định kiểm tra hai đối số là $ 2 và $ 3.
* Nếu $ 1 là '(' và $ 3 là ')', thực hiện kiểm tra một lần của $ 2. Trên các hệ thống
không hỗ trợ tùy chọn XSI, kết quả không xác định nếu $ 1 là '('
và $ 3 là ')'.
* Nếu không, tạo ra kết quả không xác định.
4 đối số:
* Nếu $ 1 là '!', phủ định kiểm tra ba đối số của $ 2, $ 3 và $ 4.
* Nếu $ 1 là '(' và $ 4 là ')', thực hiện kiểm tra hai đối số là $ 2 và $ 3.
Trên các hệ thống không hỗ trợ tùy chọn XSI, kết quả không xác định
nếu $ 1 là '(' và $ 4 là ')'.
* Nếu không, kết quả là không xác định.
> 4 đối số:
Kết quả là không xác định.
Trên các hệ thống tuân theo XSI, sự kết hợp của các số nguyên và toán tử sẽ
được đánh giá bằng cách sử dụng các quy tắc ưu tiên và liên kết được mô tả trước đây.
Ngoài ra, chuỗi nhị phân số nguyên tố so sánh '=' và "! =" sẽ có một
mức độ ưu tiên cao hơn bất kỳ trang chính đơn vị nào.
STDIN
Không được sử dụng.
ĐẦU VÀO CÁC TẬP TIN
Không có.
MÔI TRƯỜNG BIẾN
Các biến môi trường sau đây sẽ ảnh hưởng đến việc thực hiện thử nghiệm:
NGÔN NGỮ Cung cấp giá trị mặc định cho các biến quốc tế hóa chưa được đặt hoặc
vô giá trị. (Xem tập Định nghĩa cơ bản của POSIX.1‐2008, Phần 8.2,
quốc tế hóa Biến ưu tiên quốc tế hóa
các biến được sử dụng để xác định giá trị của danh mục ngôn ngữ.)
LC_ALL Nếu được đặt thành giá trị chuỗi không trống, hãy ghi đè giá trị của tất cả các chuỗi khác
các biến quốc tế hóa.
LC_CTYPE Xác định ngôn ngữ để diễn giải chuỗi byte dữ liệu văn bản
dưới dạng ký tự (ví dụ: byte đơn trái ngược với ký tự nhiều byte trong
tranh luận).
LC_MESSAGES
Xác định ngôn ngữ sẽ được sử dụng để ảnh hưởng đến định dạng và nội dung của
thông báo chẩn đoán được ghi vào lỗi tiêu chuẩn.
NLSPATH Xác định vị trí của danh mục thư để xử lý LC_MESSAGES.
BẤT NGỜ SỰ KIỆN
Mặc định.
GIỚI THIỆU
Không được sử dụng.
STDERR
Lỗi chuẩn chỉ được sử dụng cho các thông báo chẩn đoán.
OUTPUT CÁC TẬP TIN
Không có.
ĐA THẾ HỆ MÔ TẢ
Không có.
EXIT TÌNH TRẠNG
Các giá trị thoát sau sẽ được trả về:
0 biểu hiện được đánh giá là true.
1 biểu hiện được đánh giá là sai hoặc biểu hiện đã mất tích.
> 1 Đã xảy ra lỗi.
HẬU QUẢ OF LRI
Mặc định.
Sản phẩm tiếp theo phần đang nhiều thông tin.
ỨNG DỤNG SỬ DỤNG
Các phần mở rộng XSI chỉ định −a và −o bầu cử sơ bộ nhị phân và '(' và ')' khai thác
đã được đánh dấu là lỗi thời. (Nhiều biểu thức sử dụng chúng được xác định một cách mơ hồ bởi
ngữ pháp tùy thuộc vào các biểu thức cụ thể đang được đánh giá.) Tập lệnh sử dụng các
các biểu thức phải được chuyển đổi thành các dạng cho bên dưới. Mặc dù nhiều triển khai
sẽ tiếp tục hỗ trợ các hình thức lỗi thời này, các tập lệnh phải cực kỳ cẩn thận khi
xử lý thông tin đầu vào do người dùng cung cấp có thể bị nhầm lẫn với các dữ liệu này và các thư mục sơ bộ khác và
các toán tử. Trừ khi nhà phát triển ứng dụng biết tất cả các trường hợp tạo ra đầu vào cho
script, các lời gọi như:
thử nghiệm "$ 1" −a "$ 2"
nên được viết là:
thử nghiệm "$ 1" && thử nghiệm "$ 2"
để tránh sự cố nếu người dùng cung cấp các giá trị như $ 1 được đặt thành '!' và $ 2 được đặt thành null
dây. Đó là, trong trường hợp quan tâm đến tính di động tối đa, hãy thay thế:
thử nghiệm expr1 −a expr2
với:
thử nghiệm expr1 && thử nghiệm expr2
và thay thế:
thử nghiệm expr1 −o expr2
với:
thử nghiệm expr1 || thử nghiệm expr2
nhưng lưu ý rằng, trong thử nghiệm, −a có quyền ưu tiên cao hơn −o trong khi "&&" và "||" có bằng nhau
ưu tiên trong shell.
Dấu ngoặc đơn hoặc dấu ngoặc nhọn có thể được sử dụng trong ngôn ngữ lệnh shell để tạo hiệu ứng nhóm.
Dấu ngoặc đơn phải được thoát ra khi sử dụng sh; ví dụ:
thử nghiệm \( expr1 −a expr2 \) −o expr3
Lệnh này không phải lúc nào cũng di động ngay cả trên các hệ thống tuân theo XSI tùy thuộc vào
biểu thức được chỉ định bởi thể hiện1, thể hiện2, và thể hiện3. Có thể sử dụng biểu mẫu sau để thay thế:
( thử nghiệm expr1 && thử nghiệm expr2 ) || thử nghiệm expr3
Hai lệnh:
thử nghiệm "$ 1"
thử nghiệm ! "$ 1"
không thể được sử dụng một cách đáng tin cậy trên một số hệ thống lịch sử. Kết quả không mong muốn sẽ xảy ra nếu
thật là chuỗi biểu thức đã được sử dụng và $ 1 được mở rộng thành '!', '(', hoặc một sơ cấp một bậc đã biết.
Các cấu trúc tốt hơn là:
thử nghiệm −n "$ 1"
thử nghiệm −z "$ 1"
tương ứng.
Các hệ thống lịch sử cũng không đáng tin cậy do cấu trúc chung:
thử nghiệm "$ phản hồi" = "kỳ vọng dây"
Một trong những hình thức sau là biểu mẫu đáng tin cậy hơn:
thử nghiệm "X $ phản hồi" = "Không mong đợi dây"
thử nghiệm "kỳ vọng dây" = "$ phản hồi"
Lưu ý rằng biểu mẫu thứ hai giả định rằng dự kiến chuỗi không thể nhầm lẫn với bất kỳ
sơ cấp một bậc. Nếu như dự kiến chuỗi bắt đầu với '-', '(', '!', hoặc thậm chí '=', hình thức đầu tiên
nên được sử dụng thay thế. Sử dụng các quy tắc trước mà không có phần mở rộng được đánh dấu XSI, bất kỳ
trong ba hình thức so sánh là đáng tin cậy, cho bất kỳ đầu vào nào. (Tuy nhiên, lưu ý rằng
các chuỗi được trích dẫn trong mọi trường hợp.)
Bởi vì chuỗi nhị phân số nguyên tố so sánh, '=' và "! =", có mức độ ưu tiên cao hơn
hơn bất kỳ chính một bậc nào trong trường hợp đối số lớn hơn 4, kết quả không mong muốn có thể xảy ra
nếu các lập luận không được chuẩn bị đúng cách. Ví dụ, trong:
thử nghiệm −d $1 −o −d $2
Nếu $ 1 đánh giá tên thư mục có thể có của '=', ba đối số đầu tiên là
được coi là một so sánh chuỗi, điều này sẽ gây ra lỗi cú pháp khi −d is
đã gặp. Một trong những hình thức sau ngăn chặn điều này; thứ hai được ưu tiên:
thử nghiệm \( −d "$ 1" \) −o \( −d "$ 2" \)
thử nghiệm −d "$ 1" || thử nghiệm −d "$ 2"
Cũng trong trường hợp đối số lớn hơn 4:
thử nghiệm "$ 1" = "con dơi" −a "$ 2" = "quả bóng"
lỗi cú pháp xảy ra nếu $ 1 đánh giá là '(' or '!'. Một trong những hình thức sau đây ngăn cản
cái này; thứ ba được ưu tiên:
thử nghiệm "X $ 1" = "Xbat" −a "X $ 2" = "Xball"
thử nghiệm "$ 1" = "con dơi" && thử nghiệm "$ 2" = "quả bóng"
thử nghiệm "X $ 1" = "Xbat" && thử nghiệm "X $ 2" = "Xball"
VÍ DỤ
1. Thoát nếu không có hai hoặc ba đối số (hai biến thể):
if [ $# −ne 2 ] && [ $# −ne 3 ]; sau đó ra 1; fi
if [ $# −lt 2 ] || [ $# −gt 3 ]; sau đó ra 1; fi
2. Thực hiện một mkdir nếu một thư mục không tồn tại:
thử nghiệm ! −d tạm thời && mkdir tạm thời
3. Chờ một tệp không thể đọc được:
trong khi thử nghiệm −r tập tin
do
ngủ 30
thực hiện
bỏ lỡ '"tập tin" is Không còn có thể đọc được '
4. Thực hiện một lệnh nếu đối số là một trong ba chuỗi (hai biến thể):
if [ "$ 1" = "Lê" ] || [ "$ 1" = "giống nho" ] || [ "$ 1" = "táo" ]
sau đó
lệnh
fi
trường hợp "$ 1" trong
lê | nho | táo) lệnh ;;
nó C
CƠ SỞ LÝ LUẬN
Lệnh điều kiện có nguồn gốc từ KornShell (dấu ngoặc kép [[]]) đã được lấy ra khỏi vỏ
mô tả ngôn ngữ lệnh trong một đề xuất ban đầu. Sự phản đối đã được đưa ra rằng thực
vấn đề là sử dụng sai thử nghiệm chỉ huy ([), và đặt nó vào vỏ là một cách sai lầm
để khắc phục sự cố. Thay vào đó, tài liệu thích hợp và một từ dành riêng cho shell mới (!) là
hợp lý.
Các bài kiểm tra yêu cầu nhiều thử nghiệm các hoạt động có thể được thực hiện ở cấp độ shell bằng cách sử dụng
lời kêu gọi riêng lẻ của thử nghiệm lệnh logic và shell logic, thay vì sử dụng
dễ bị lỗi −o cờ của thử nghiệm.
Các hệ thống tuân theo XSI hỗ trợ nhiều hơn bốn đối số.
Các hệ thống tuân theo XSI hỗ trợ việc kết hợp các mã số chính với các cấu trúc sau:
biểu thức1 −a biểu thức2
Đúng nếu cả hai biểu thức1 và biểu thức2 là sự thật
biểu thức1 −o biểu thức2
Đúng nếu ít nhất một trong số biểu thức1 và biểu thức2 là sự thật
( biểu hiện )
Đúng nếu biểu hiện là đúng.
Khi đánh giá các biểu thức kết hợp phức tạp hơn này, các quy tắc ưu tiên sau đây là
đã sử dụng:
* Các số nguyên tố một bậc có mức độ ưu tiên cao hơn các số nguyên tử nhị phân đại số.
* Các số nguyên tố đơn phân có mức độ ưu tiên thấp hơn các số nguyên tố nhị phân chuỗi.
* Các số nguyên một bậc và nhị phân có mức độ ưu tiên cao hơn bậc một chuỗi sơ cấp.
* Các ! toán tử có quyền ưu tiên cao hơn −a nhà điều hành và −a nhà điều hành có
ưu tiên cao hơn −o nhà điều hành.
* Các −a và −o các toán tử được kết hợp trái.
* Dấu ngoặc đơn có thể được sử dụng để thay đổi mức độ ưu tiên thông thường và tính liên kết.
Phiên bản BSD và System V của −f không giống nhau. Định nghĩa BSD là:
−f hồ sơ Đúng nếu hồ sơ tồn tại và không phải là một thư mục.
Phiên bản SVID (đúng nếu tệp tồn tại và là tệp thông thường) đã được chọn cho điều này
khối lượng của POSIX.1‐2008 vì việc sử dụng nó phù hợp với −b, −c, −dvà −p Toán hạng
(hồ sơ tồn tại và là một loại tệp cụ thể).
Sản phẩm −e chính, sở hữu chức năng tương tự như chức năng được cung cấp bởi C shell, là
được thêm vào vì nó cung cấp cách duy nhất để tập lệnh shell tìm ra tệp có tồn tại hay không
mà không cần cố gắng mở tệp. Vì các triển khai được phép thêm tệp bổ sung
các loại, một tập lệnh di động không thể sử dụng:
thử nghiệm −b foo −o −c foo −o −d foo −o −f foo −o −p foo
để tìm hiểu xem foo là một tệp hiện có. Trên các hệ thống BSD lịch sử, sự tồn tại của một tệp
có thể được xác định bởi:
thử nghiệm −f foo −o −d foo
nhưng không có cách nào dễ dàng để xác định rằng một tệp hiện có là một tệp thông thường. Sớm
đề xuất đã sử dụng KornShell −a chính (với cùng một ý nghĩa), nhưng điều này đã được thay đổi thành −e
bởi vì có những lo ngại về khả năng cao con người nhầm lẫn −a chính
với −a toán tử nhị phân.
Các tùy chọn sau không được bao gồm trong tập POSIX.1‐2008 này, mặc dù chúng
được cung cấp bởi một số triển khai. Các toán hạng này không nên được sử dụng bởi các triển khai mới
cho các mục đích khác:
−k hồ sơ Đúng nếu hồ sơ tồn tại và bit dính của nó được thiết lập.
−C hồ sơ Đúng nếu hồ sơ là một tập tin liền kề.
−V hồ sơ Đúng nếu hồ sơ là một tệp phiên bản.
Tùy chọn sau không được bao gồm bởi vì nó không có tài liệu trong hầu hết các triển khai,
đã bị xóa khỏi một số triển khai (bao gồm cả Hệ thống V) và chức năng là
được cung cấp bởi shell (xem Phần 2.6.2, Tham số Sự bành trướng.
−l chuỗi Chiều dài của chuỗi chuỗi.
Sản phẩm −b, −c, −g, −p, −uvà −x toán hạng có nguồn gốc từ SVID; BSD lịch sử không
cung cấp cho họ. Các −k toán hạng có nguồn gốc từ Hệ thống V; BSD lịch sử không cung cấp nó.
Trên các hệ thống BSD lịch sử, thử nghiệm −w thư mục luôn trả về false bởi vì thử nghiệm cố gắng
mở thư mục để viết, mà luôn luôn không thành công.
Một số bầu cử sơ bộ bổ sung mới được phát minh hoặc từ KornShell đã xuất hiện sớm
đề xuất như một phần của lệnh có điều kiện ([[]]): s1 > s2, s1 < s2, str = Belt Hold, str
!= Belt Hold, f1 −nt f2, f1 −không f2và f1 −ef f2. Họ không được chuyển tiếp vào
thử nghiệm tiện ích khi lệnh có điều kiện bị xóa khỏi trình bao vì chúng không
đã được bao gồm trong thử nghiệm tiện ích được tích hợp vào các triển khai lịch sử của sh tiện ích.
Sản phẩm −t file_descriptor chính được hiển thị với một đối số bắt buộc vì ngữ pháp là
không rõ ràng nếu nó có thể được bỏ qua. Các triển khai trong lịch sử đã cho phép nó được bỏ qua,
cung cấp giá trị mặc định là 1.
Người ta lưu ý rằng '[' không phải là một phần của bộ ký tự tên tệp di động; tuy nhiên, vì nó
bắt buộc phải được mã hóa bằng một byte duy nhất và là một phần của bộ ký tự di động,
tên của tiện ích này tạo thành một chuỗi ký tự trên tất cả các ngôn ngữ được hỗ trợ.
TƯƠNG LAI HƯỚNG DẪN
Không có.
Sử dụng testposix trực tuyến bằng các dịch vụ onworks.net