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

为什么 $1 在 $'...' 内部使用时不起作用?
input() {
    read -p $'\e[31m\e[1m $1 [Y/n] \e[0m' -n 1 -r
}

input "test"
exit

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

答案1

问题是变量不会在单引号内扩展。您正在寻找这个:

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

请注意,现在只有转义序列是单引号的,而转义$1序列是双引号的。

相关内容