ทำไมไม่มีบรรทัดใหม่ในตอนท้ายของการอ้างถึง subshell และส่งผ่านผลลัพธ์เพื่อ echo


9

เมื่อฉันทำls | grep pngผลลัพธ์ของ grep คือ:

2015-05-15-200203_1920x1080_scrot.png 
2015-05-16-025536_1920x1080_scrot.png

(ชื่อไฟล์ขึ้นบรรทัดใหม่ชื่อไฟล์ขึ้นบรรทัดใหม่)

ดังนั้นecho $(ls | grep png)ผลลัพธ์:

2015-05-15-200203_1920x1080_scrot.png 2015-05-16-025536_1920x1080_scrot.png

(ชื่อไฟล์, ช่องว่างจากการแยกคำ, ชื่อไฟล์, บรรทัดใหม่ !! จาก echo !!)

นั่นคือทั้งหมดที่ตกลง แต่เมื่อฉันทำเช่นนี้เพื่อป้องกันการแยกคำ: echo "$(ls | grep png)"ออกเป็น:

2015-05-15-200203_1920x1080_scrot.png 
2015-05-16-025536_1920x1080_scrot.png

และคำถามของฉันคือขึ้นบรรทัดใหม่ที่สอง (หนึ่งควรมาจาก grep และหนึ่งจาก echo)

คำตอบ:


8

นั่นคือบรรทัดใหม่จากechoคุณสามารถยืนยันได้โดยใช้echo -nเพื่อระงับการขึ้นบรรทัดใหม่:

echo -n "$(ls | grep png)"

คำสั่งเปลี่ยนตัวลบบรรทัดใหม่ต่อท้ายทุกบรรทัดใหม่ที่ผ่านมาเพิ่มขึ้นโดยecho, grepมีอะไรที่ต้องทำที่นี่


"การแทนที่คำสั่งลบบรรทัดใหม่ต่อท้ายทั้งหมด" - นั่นแหละ! ขอบคุณ
MichalH
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.