![$'...' 내부에서 $1을 사용할 때 작동하지 않는 이유는 무엇입니까?](https://linux55.com/image/168447/%24'...'%20%EB%82%B4%EB%B6%80%EC%97%90%EC%84%9C%20%241%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%A0%20%EB%95%8C%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
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
시퀀스는 큰따옴표로 묶습니다.