นั่นไม่ใช่ความคิดเห็นแบบหลายบรรทัด #
เป็นความคิดเห็นบรรทัดเดียว
:
(โคลอน)ไม่ใช่ความคิดเห็นเลย แต่เป็นคำสั่งในตัวของเชลล์ซึ่งโดยทั่วไปคือNOPซึ่งเป็นการดำเนินการที่ไม่ทำอะไรเลยยกเว้นคืนค่าจริงเช่นtrue
(และตั้งค่า$?
เป็น 0 เป็นผลข้างเคียง) อย่างไรก็ตามเนื่องจากเป็นคำสั่งจึงสามารถรับอาร์กิวเมนต์ได้และเนื่องจากมันละเว้นการขัดแย้งในกรณีส่วนใหญ่มันจึงทำตัวเหมือนผิวเผิน ปัญหาหลักของ kludge นี้คือข้อโต้แย้งที่ยังคงขยายตัวนำไปสู่โฮสต์ของผลกระทบที่ไม่ได้ตั้งใจ อาร์กิวเมนต์ยังคงได้รับผลกระทบจากข้อผิดพลาดทางไวยากรณ์การเปลี่ยนเส้นทางยังคงดำเนินการดังนั้น: > file
จะถูกตัดทอนfile
และการ: $(dangerous command)
แทนที่จะยังคงทำงาน
#
น่าแปลกใจวิธีที่ปลอดภัยอย่างสมบูรณ์ไม่น้อยกว่าที่จะแทรกความคิดเห็นในเชลล์สคริปต์อยู่กับ ทำตามนั้นแม้กระทั่งสำหรับความคิดเห็นหลายบรรทัด อย่าพยายามใช้ (ab) :
เพื่อแสดงความคิดเห็น ไม่มีกลไกการแสดงความคิดเห็นหลายบรรทัดโดยเฉพาะในเชลล์ที่คล้ายคลึงกับ/* */
รูปแบบสแลชสตาร์ในC
ภาษาที่เหมือนกัน
เพื่อความสมบูรณ์ แต่ไม่ใช่เพราะมันเป็นแนวทางปฏิบัติที่แนะนำฉันจะพูดถึงว่าเป็นไปได้ที่จะใช้เอกสารที่นี่เพื่อทำ "ความคิดเห็น" หลายบรรทัด:
: <<'end_long_comment'
This is an abuse of the null command ':' and the here-document syntax
to achieve a "multi-line comment". According to the POSIX spec linked
above, if any character in the delimiter word ("end_long_comment" in
this case) above is quoted, the here-document will not be expanded in
any way. This is **critical**, as failing to quote the "end_long_comment"
will result in the problems with unintended expansions described above.
All of this text in this here-doc goes to the standard input of :, which
does nothing with it, hence the effect is like a comment. There is very
little point to doing this besides throwing people off. Just use '#'.
end_long_comment
CommentedOutBlock() { echo "test"; }