$ '...'内で$ 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シーケンスを二重引用符で囲みます。

関連情報