$'...' 내부에서 $1을 사용할 때 작동하지 않는 이유는 무엇입니까?

$'...' 내부에서 $1을 사용할 때 작동하지 않는 이유는 무엇입니까?
input() {
    read -p $'\e[31m\e[1m $1 [Y/n] \e[0m' -n 1 -r
}

input "test"
exit

이것은 단지 "$1"을 텍스트 한 줄로 인쇄합니다. "test"가 인쇄되지 않는 이유는 무엇이며 그렇게 하려면 어떻게 해야 합니까?

답변1

문제는 변수가 작은따옴표 내에서 확장되지 않는다는 것입니다. 당신은 이것을 찾고 있습니다:

read -p $'\e[31m\e[1m '"$1"$' [Y/n] \e[0m' -n 1 -r

이제 이스케이프 시퀀스만 작은따옴표로 묶이고 이스케이프 $1시퀀스는 큰따옴표로 묶습니다.

관련 정보