나는 다음을 시도했습니다 :
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는 해당 값을 변수로 유지합니다.