Tại sao không có một dòng mới ở cuối trích dẫn một subshell và chuyển kết quả cho echo?


9

Khi tôi làm ls | grep pngđầu ra của grep là:

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

(tên tệp, dòng mới, tên tệp, dòng mới)

sau đó, echo $(ls | grep png)đầu ra:

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

(tên tệp, khoảng trắng từ tách từ, tên tệp, dòng mới !! từ echo !!)

Đó là tất cả ok, nhưng khi tôi làm điều này để ngăn chặn việc chia tách từ : echo "$(ls | grep png)", đầu ra là:

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

Và câu hỏi của tôi là, dòng mới thứ hai ở đâu (một nên từ grep và một từ echo)?

Câu trả lời:


8

Đó là dòng mới từ echo, bạn có thể xác minh bằng cách sử dụng echo -nđể chặn dòng mới:

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

Lệnh thay thế loại bỏ tất cả các dòng mới, dòng mới cuối cùng được thêm vào echo, grepkhông có gì để làm ở đây.


"Thay thế lệnh loại bỏ tất cả các dòng mới" - đó là nó! Cảm ơn bạn
MichalH 17/05/2015
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.