Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

eval 설명에서 확장과 치환에 대한 궁금증 #10

Open
nsjsoft opened this issue Mar 27, 2024 · 1 comment
Open

eval 설명에서 확장과 치환에 대한 궁금증 #10

nsjsoft opened this issue Mar 27, 2024 · 1 comment

Comments

@nsjsoft
Copy link

nsjsoft commented Mar 27, 2024

안녕하세요 mug896님에게 도움을 많이 받고 있는 개발자입니다.
글을 읽다 궁금증이 너무 증폭되어 이렇게 글을 남깁니다.
eval 설명에서 보면

  1. eval 읽어 들이는 단계에서 위와 같이 확장, 치환이 되고 quotes 이 삭제된다.
    echo $AA 200
  2. 실행단계 에서도 확장, 치환이 일어나므로 $AA 는 100 이된다.
    eval echo '$AA' $BB
    100 200

설명글에 확장, 치환이 같이 나오는데 어느 부분이 확장이고 어느 부분이 치환인지
도저히 이해가 안가네요...
단순히 사전적의미로 보면 확장은 말그대로 넓히는 거고 치환은 바꾸는 건데
제가 보기에는 치환밖에는 보이지 않거든요
확장과 치환글을 보아도
Brace확장, Tilde확장, 매개변수확장, 산술확장이고
치환은 명령치환과 프로세스 치환뿐인데 eval에서 설명하신 확장과 치환의 차이점,
그러니깐 구분을 알고 싶습니다.

감사합니다.

@mug896
Copy link
Owner

mug896 commented Mar 29, 2024

Shell 에서는 quotes 이 아주 중요한 부분을 차지하고 까다롭기 때문에
eval 의 설명에 포함된것 같습니다.
말씀하신 대로 위의 예제에서는 변수 $AA $BB 에 대한 확장만 보이는데
"확장" 과 "치환" 단어는 bash 영문 도큐먼트에서 expansion 은 "확장" 으로
substitution 은 "치환" 으로 변역한 것입니다.
$AA 가 100 으로 되는것은 단순히 "치환" 이지만 shell 에서는
$AA 와 매개변수 확장에 사용되는 ${AA} 형태가 동일하게 사용되므로
매개변수 확장의 가장 단순한 형태로 보고 확장으로 설명하고 있습니다.

Brace expansion
Tilde expansion
Parameter expansion
Arithmetic expansion
Command substitution
Process substitution
Pathname expansion

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants