![이 명령이 예상대로 작동하지 않는 이유는 무엇입니까? [폐쇄]](https://linux55.com/image/119201/%EC%9D%B4%20%EB%AA%85%EB%A0%B9%EC%9D%B4%20%EC%98%88%EC%83%81%EB%8C%80%EB%A1%9C%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%ED%8F%90%EC%87%84%5D.png)
cat $(echo this\\ list)
똑같아 보여야지
cat this\ list
그러나 그것은 진실이 아니다.
나는 내가 사용할 수 있다는 것을 안다
cat "$(echo this\\ list)"
하지만 여러 파일을 cat에 에코할 수는 없습니다.
첫 번째 명령이 작동하지 않는 이유는 무엇입니까?
답변1
다음을 통해 무슨 일이 일어나고 있는지 확인할 수 있습니다 set -x
.
:> set -x
:> cat $(echo this\\ list)
++ echo 'this\' list
+ cat 'this\' list
:> cat this\ list
+ cat 'this list'
차이점은 두 개의 매개변수(예: 하나의 파일 과 다른 파일을 읽으려고 시도하는 것 ) 'this\' list
가 있지만 하나의 매개변수(예: 다른 파일 이름)만 있다는 것입니다.cat
this\
list
'this list'
다음을 수행해야 합니다.
:> cat "$(echo this\ list)"
++ echo 'this list'
+ cat 'this list'