trueđã không được xây dựng vào vỏ Bourne. :luôn luôn là (đó là cách để nhập ý kiến trước khi #được giới thiệu).
Điều đó, và bởi vì nó ngắn hơn để gõ có lẽ là lý do chính mà mọi người thích :hơn true.
Lưu ý một sự khác biệt khác trong các vỏ POSIX ( bashchỉ, trong chế độ POSIX): trong khi đó truelà một nội trang thông thường (thậm chí không phải dựng sẵn), :là một nội dung đặc biệt . Điều đó có một vài hàm ý, hầu hết trong số đó dường như không có bất kỳ tác động nào trong trường hợp cụ thể này:
Nếu một :lệnh thất bại, bao gồm vì chuyển hướng không thành công, điều đó làm cho shell thoát ra. Trong thực tế, điều đó có thể sẽ không tạo ra sự khác biệt trừ khi bạn chuyển hướng sang:
$ sh -c ': > / ; echo HERE'
sh: 1: cannot create /: Is a directory
$ sh -c 'true > /; echo HERE'
sh: 1: cannot create /: Is a directory
HERE
trong var=value :, varvẫn được đặt thành valuesau khi :trả về, không phải trong trường hợp true:
$ var=1; var=2 : ; echo "$var"
2
$ var=1; var=2 true; echo "$var"
1
Cũng lưu ý rằng || truecác công trình trong vỏ của rcvà cshgia đình nhưng không || :(nhưng không phải để hủy bỏ set -etrong csh).
|| :không giống như :. Nó có nghĩa là hoặc chạy :khác (có nghĩa là, nếu đường ống trước đó không thành công).
set -e
false
Sẽ khiến shell thoát ra vì set -evà falsecó trạng thái thoát khác không (thất bại). Các set -ehiệu ứng bị hủy nếu lệnh đó trả về một trạng thái thoát khác không được sử dụng như một điều kiện như trong:
if false; then ...
while false; do ...
false && : ...
false || : ...
false && :chỉ hủy bỏ set -e. false || :hủy bỏ set -evà đặt trạng thái thoát thành 0như vậy là thành ngữ hơn để nói rằng chúng tôi muốn bỏ qua mã thoát thất bại của lệnh. Hầu hết sẽ cho rằng đó || truelà dễ đọc hơn (truyền đạt ý định rõ ràng hơn).
||:(không có không gian) cũng có giá trị trong bash. Nó làm điều tương tự như|| :hoặc|| true.