서브쉘을 인용하고 결과를 에코에 전달하는 끝에 개행 문자가 없는 이유는 무엇입니까?

서브쉘을 인용하고 결과를 에코에 전달하는 끝에 개행 문자가 없는 이유는 무엇입니까?

grep을 실행하면 ls | grep png출력은 다음과 같습니다.

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

(파일명, 단어분할 공백, 파일명, 개행문자!! From echo!!)

괜찮습니다. 하지만 단어 분리를 방지하기 위해 이렇게 하면 echo "$(ls | grep png)"결과는 다음과 같습니다.

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

제 질문은 두 번째 개행 문자(하나는 grep에서, 하나는 echo에서 가져와야 함)는 어디에 있습니까?

답변1

이것은 에서 오는 줄 바꿈입니다 echo. 다음을 echo -n사용하여 후행 줄 바꿈을 억제하여 이를 확인할 수 있습니다.

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

명령 대체모든 후행 개행 문자를 제거합니다. 마지막 개행 문자는 에 의해 추가되었으며 echo여기서는 grep관련이 없습니다.

관련 정보