true
ไม่ได้ถูกสร้างขึ้นในเชลล์เป้าหมาย :
เสมอคือ (มันเป็นวิธีการป้อนความคิดเห็นก่อนที่จะ#
ถูกนำมาใช้)
นั่นและเพราะมันสั้นชนิดอาจเป็นเหตุผลหลักคนชอบมากกว่า:
true
หมายเหตุความแตกต่างอื่นใน POSIX shells (สำหรับbash
, เฉพาะในโหมด POSIX): ในขณะที่true
builtin ปกติ (ไม่จำเป็นต้องมี builtin) :
เป็นbuiltin พิเศษ ที่มีความหมายบางอย่างซึ่งส่วนใหญ่ไม่น่าจะมีผลกระทบใด ๆ ในกรณีนี้โดยเฉพาะ:
หาก:
คำสั่งล้มเหลวรวมถึงเนื่องจากการเปลี่ยนเส้นทางที่ล้มเหลวทำให้เชลล์ออก ในทางปฏิบัตินั้นอาจจะไม่สร้างความแตกต่างเว้นแต่ว่าคุณผ่านการเปลี่ยนเส้นทางไป:
$ sh -c ': > / ; echo HERE'
sh: 1: cannot create /: Is a directory
$ sh -c 'true > /; echo HERE'
sh: 1: cannot create /: Is a directory
HERE
ในvar=value :
, var
ยังคงกำหนดให้value
หลังจากที่:
ผลตอบแทนที่ไม่ได้อยู่ในกรณีของtrue
:
$ var=1; var=2 : ; echo "$var"
2
$ var=1; var=2 true; echo "$var"
1
นอกจากนี้ทราบว่า|| true
ผลงานในเปลือกหอยของrc
และcsh
ครอบครัว แต่ไม่|| :
( แต่ไม่ได้ที่จะยกเลิกset -e
ในcsh
)
|| :
:
ไม่ได้เป็นเช่นเดียวกับ มันหมายถึงหรือเรียกใช้เป็น:
อย่างอื่น (นั่นคือถ้าไปป์ไลน์ก่อนหน้านี้ล้มเหลว)
set -e
false
จะทำให้เชลล์ออกเนื่องจากset -e
และfalse
มีสถานะการออกที่ไม่ใช่ศูนย์ (ล้มเหลว) เอset -e
ฟเฟกต์จะถูกยกเลิกหากคำสั่งที่ส่งคืนสถานะการออกที่ไม่ใช่ศูนย์ถูกใช้เป็นเงื่อนไขเช่น:
if false; then ...
while false; do ...
false && : ...
false || : ...
false && :
set -e
ยกเลิกเท่านั้น false || :
ยกเลิกset -e
และตั้งค่าสถานะการออก0
ให้เป็นสำนวนมากกว่าที่จะบอกว่าเราต้องการที่จะเพิกเฉยต่อรหัสทางออกความล้มเหลวของคำสั่ง ส่วนใหญ่จะโต้แย้งว่า|| true
มีความชัดเจนมากขึ้น (บ่งบอกถึงความตั้งใจชัดเจนมากขึ้น)
||:
(ไม่มีที่ว่าง) ก็ใช้ได้ใน bash เช่นกัน มันจะเป็นสิ่งเดียวกับหรือ|| :
|| true