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