Mac의 홈 디렉터리에 있는 셸에서
eval "ls"
디렉터리만 표시하는 다음 명령을 실행합니다. 하지만 내가 달리면
eval "$(ls)"
다음과 같은 결과가 나타납니다.
zsh: command not found: Applications
zsh: command not found: Desktop
zsh: command not found: Development
zsh: command not found: Development.zip
zsh: command not found: Documents
zsh: command not found: Downloads
zsh: command not found: Dropbox
zsh: command not found: Library
zsh: command not found: Movies
zsh: command not found: Music
zsh: command not found: Pictures
zsh: command not found: Public
여기서 무슨 일이 일어나고 있는지 잘 모르겠습니다. 차이점은 무엇입니까?
답변1
이 구성은 서브쉘에서 $(stuff)
실행된 결과로 대체 됩니다. stuff
그래서:
echo $(echo hello)
될 것입니다
echo hello
그래서,
eval "$(ls)"
실행되고 ls
, 출력을 얻고, 해당 출력을 인수로 사용합니다 eval
.