Tôi luôn ngạc nhiên rằng trong thư mục /bin
có một [
chương trình.
Đây có phải là những gì được gọi khi chúng ta đang làm một cái gì đó như : if [ something ]
?
Bằng cách gọi [
chương trình một cách rõ ràng trong một vỏ, nó yêu cầu một tương ứng ]
, và khi tôi cung cấp dấu ngoặc đóng, nó dường như không làm gì cho dù tôi có chèn gì vào giữa các dấu ngoặc.
Không cần phải nói, cách thông thường để nhận trợ giúp về một chương trình không hoạt động, tức là man [
cũng không [ --help
hoạt động.
man '['
hoạt động tốt đối với tôi - hoặc bạn quên trích dẫn [
hoặc bạn có một định nghĩa khác về "tác phẩm".
[
đánh giá các đối số của nó, vì vậy bạn cần có khoảng trắng giữa tất cả chúng. [ a=b ]
không phải là một so sánh: nó sẽ luôn luôn đúng (nó là một chuỗi đơn: "a = b", luôn được đánh giá là đúng ) Và bạn nên giới hạn số lượng đối số là 4 (mặc dù các triển khai gần đây sẽ cho phép nhiều hơn .. . giới hạn ở 4 làm cho nó dễ mang theo hơn. Ví dụ: [ "a" = "b" ]
đã có 4 đối số: "a" "=" "b" và kết thúc không cần thiết của thử nghiệm arg: "]"). Nếu bạn cần thêm: kiểm tra chuỗi với ví dụ:if [ "$Var_a" = "foo" ] && [ "$Var_b" = "bar" ] ; then : do something ; fi
!
của chính nó (không được giải thích và không được trích dẫn) sẽ không được thay thế, và thậm chí sẽ tốt hơn if ! [ ...
. Tất cả các bản mở rộng bash sử dụng !
bao gồm ít nhất là trên nhân vật khác
[
-builtin trong bash
(và có thể cả vỏ khác nữa), và điều này có thể được sử dụng thay vì /bin/[
. Ngoài ra còn có test
-command, trên nhiều hệ thống là một liên kết tượng trưng đến /bin/[
(hoặc ngược lại) - nhưng trên các hệ thống khác là một lệnh riêng biệt.
[
đề cập đếntest
lệnh mặc dù, khôngexpr
, vì vậy nó phải làman test