ในสคริปต์ทุบตีฉันได้รับจากโปรแกรมเมอร์คนอื่นบางบรรทัดมีความยาวเกิน 80 คอลัมน์ อะไรคืออักขระหรือสิ่งที่จะเพิ่มในบรรทัดเพื่อระบุว่าบรรทัดต่อไปในบรรทัดถัดไป?
ในสคริปต์ทุบตีฉันได้รับจากโปรแกรมเมอร์คนอื่นบางบรรทัดมีความยาวเกิน 80 คอลัมน์ อะไรคืออักขระหรือสิ่งที่จะเพิ่มในบรรทัดเพื่อระบุว่าบรรทัดต่อไปในบรรทัดถัดไป?
คำตอบ:
อักขระเป็นเครื่องหมายแบ็กสแลช \
จากคู่มือทุบตี :
อาจใช้อักขระแบ็กสแลช "\" เพื่อลบความหมายพิเศษสำหรับอักขระถัดไปที่อ่านและสำหรับความต่อเนื่องของบรรทัด
^M. ปัญหาดูเหมือนจะเป็นสคริปต์ที่มอบให้กับฉันโดยคนที่ใช้ windows dos2unixแก้ไขได้อย่างรวดเร็ว:)
                    โดยทั่วไปคุณสามารถใช้แบ็กสแลชที่ท้ายบรรทัดเพื่อให้คำสั่งดำเนินต่อไปยังบรรทัดถัดไป อย่างไรก็ตามมีบางกรณีที่คำสั่งต่อเนื่องโดยปริยายกล่าวคือเมื่อบรรทัดลงท้ายด้วยโทเค็นที่ไม่สามารถยุติคำสั่งได้ตามกฎหมาย ในกรณีนี้เชลล์จะรู้ว่ากำลังจะมีมากขึ้นและสามารถละแบ็กสแลชได้ ตัวอย่างบางส่วน:
# In general
$ echo "foo" \
> "bar"
foo bar
# Pipes
$ echo foo |
> cat
foo
# && and ||
$ echo foo &&
> echo bar
foo
bar
$ false ||
> echo bar
bar
แตกต่างกัน แต่เกี่ยวข้องกันคือความต่อเนื่องโดยปริยายภายในเครื่องหมายคำพูด ในกรณีนี้หากไม่มีแบ็กสแลชคุณเพียงแค่เพิ่มบรรทัดใหม่ลงในสตริง
$ x="foo
> bar"
$ echo "$x"
foo
bar
ด้วยแบ็กสแลชคุณจะแยกบรรทัดตรรกะออกเป็นหลายบรรทัดตรรกะอีกครั้ง
$ x="foo\
> bar"
$ echo "$x"
foobar
[[- ]]สภาพ แต่ไม่ได้อยู่ในคนอื่น ๆ และฉันพยายามที่จะคิดออกกฎ
                    \ทำงาน คำตอบของ @ Guillaume และความคิดเห็นของ @ George ตอบคำถามนี้อย่างชัดเจน ที่นี่ฉันจะอธิบายว่าทำไมThe backslash has to be the very last character before the end of line character.พิจารณาคำสั่งนี้:
mysql -uroot \ -hlocalhost
หากมีช่องว่างหลังจาก\นั้นความต่อเนื่องของบรรทัดจะไม่ทำงาน เหตุผลก็คือ\  ลบความหมายพิเศษสำหรับอักขระถัดไปซึ่งเป็นช่องว่างไม่ใช่อักขระฟีดบรรทัดที่มองไม่เห็น อักขระฟีดบรรทัดอยู่หลังช่องว่างที่ไม่\อยู่ในตัวอย่างนี้