bash의 $'...'에서 변수를 사용할 수 있습니까?

bash의 $'...'에서 변수를 사용할 수 있습니까?

나는 다음을 시도했습니다 :

myprogram $'Hello $HOME'

하지만 작동하지 않습니다(수신된 명령줄 인수 는 값이 아니라 myprogram입니다 ).Hello $HOME$HOME

답변1

C 스타일 백슬래시 이스케이프가 해석된다는 점을 제외하면 $'...'작은따옴표로 묶인 문자열처럼 작동합니다 . 적어도 Bash 매뉴얼은 마지막에 이것을 언급합니다.ANSI-C 참조 페이지:

확장 결과는 달러 기호가 없는 것처럼 작은따옴표로 묶입니다.

그래서 아니야. 이것이 아마도 작은 따옴표(또는 그 반대)를 사용하기로 선택한 이유일 것입니다. 비록 해당 기능의 기록은 모르지만 말입니다.

큰따옴표를 사용하고 필요에 따라 따옴표를 변경해야 합니다. 즉

$ myprogram "Hello $HOME"

또는 탭과 혼합

$ myprogram $'Hello\t'"$HOME"

답변2

당신은 그것을 작성해야합니다

$ myprogram "Hello $HOME"

Bash는 $,`(백틱) 또는 를 제외하고 큰따옴표 안에 있는 모든 내용의 문자 그대로의 의미를 유지합니다. 따라서 여기서는 "Hello"를 값으로 처리하고 $Hello는 해당 값을 변수로 유지합니다.

관련 정보