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 ( bash
chỉ, trong chế độ POSIX): trong khi đó true
là 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 :
, var
vẫn được đặt thành value
sau 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 || true
các công trình trong vỏ của rc
và csh
gia đình nhưng không || :
(nhưng không phải để hủy bỏ set -e
trong 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 -e
và false
có trạng thái thoát khác không (thất bại). Các set -e
hiệ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 -e
và đặt trạng thái thoát thành 0
như 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 đó || true
là 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
.