เมื่อสร้างเชลล์สคริปต์โดยใช้ไพพ์ไลน์และการใช้แบ็กสแลชเพื่อดำเนินการต่อบรรทัดฉันต้องการแทรกความคิดเห็นบนบรรทัดแยกในแฟชั่นที่แข็งแกร่งอ่านได้และพกพาได้
ตัวอย่างเช่นให้ใช้คำสั่งหลายบรรทัดที่ไม่ใส่เครื่องหมาย (ถูกขโมยจาก @DigitalRoss เพื่อความชัดเจน):
echo abc |
tr a-z A-Z |
sort |
uniq
... ด้านล่างมีความสวยงามใกล้เคียงกับสิ่งที่ฉันต้องการให้สำเร็จ แต่ด้วยเหตุผลที่ชัดเจนไม่ทำงาน ... และใช่ฉันทราบดีว่านี่ไม่ใช่สิ่งที่ควรค่าแก่การแสดงความคิดเห็น:
# Perform critical system task.
# NOTE - An example of what does *not* work.
echo abc |
# Convert lowercase to uppercase.
tr a-z A-Z |
# Sort the results.
sort |
# Only show unique lines.
uniq
คำตอบที่เกี่ยวข้องที่มีอยู่ไม่น่าพอใจสำหรับฉันดังนี้:
ก่อนอื่นคำตอบของ glenn jackman (การเพิ่มอาร์กิวเมนต์ในอาเรย์แล้วเรียกใช้อาเรย์) ทำงานสำหรับคำสั่งเดี่ยว แต่ไม่ได้ผลสำหรับการไพพ์ไลน์ (และแม้ว่ามันจะทำมันจะเพิ่มความซับซ้อนที่ฉันต้องการ
ประการที่สอง@Gilles 'คำตอบที่นี่ (ซึ่งใช้:
) ก็ไม่ได้ดูเหมือนจะทำงานกับ pipelining เพราะมันเปลี่ยนการไหลของไปป์ไลน์:
$ echo "abc" | :
$
( หมายเหตุ : หากมีสิ่งเทียบเท่ากับ:
ที่ส่งผ่านเอาท์พุทที่ไม่ได้แก้ไขนั่นจะเป็นที่ยอมรับได้ แต่ฉันไม่สามารถหาได้ฉันสามารถเขียนแบบกำหนดเองได้ แต่มันจะลดการพกพา)
ในที่สุดคำตอบสุดท้ายของDigitalRoss ใน StackOverflowทำงานได้ดีสำหรับการเพิ่มความคิดเห็นในบรรทัดเดียวกัน แต่ฉันต้องการความคิดเห็นอย่างมากในบรรทัดแยกต่างหาก มิฉะนั้นเมื่อบรรทัดมีความยาวแตกต่างกันอย่างมากความสามารถในการอ่านจะลดลง:
echo abc | # normal comment OK here`
/usr/local/bin/really/long/path/ridiculously-long-filename.sh | # another normal comment OK here
sort | # the pipelines are automatically continued
uniq # final comment
ฉันกำลังมองหาคำตอบที่รักษาความสามารถในการอ่านและลดความซับซ้อนหรืออื่น ๆ ที่เป็นสาเหตุของสิ่งที่ฉันกำลังมองหาเป็นไปไม่ได้
i++; // increment i by one
หนึ่งไม่ควรเขียนความเห็นชอบ ผมขอแนะนำให้คุณอ่าน"องค์ประกอบของการเขียนโปรแกรม Style"