为什么 $1 在 $'...' 中使用时不起作用?

Nat*_*ouk 3 bash

input() {
    read -p $'\e[31m\e[1m $1 [Y/n] \e[0m' -n 1 -r
}

input "test"
exit
Run Code Online (Sandbox Code Playgroud)

这只是打印“$1”作为文本行。为什么不打印“测试”,我怎样才能做到这一点?

Qua*_*odo 13

问题是变量没有在单引号内展开。你正在寻找这个:

read -p $'\e[31m\e[1m '"$1"$' [Y/n] \e[0m' -n 1 -r
Run Code Online (Sandbox Code Playgroud)

看到现在只有转义序列是单引号,而$1双引号。