質問と変数に同時に読み取りコマンドを使用する方法は?

質問と変数に同時に読み取りコマンドを使用する方法は?

Linuxシェルスクリプトで--dialogコマンドを使用せずにreadコマンドを使用してテキストと変数の一部に色を使用するにはどうすればよいですか?

例次のようにbashスクリプトに問題が発生するはずです。

このバージョンは大丈夫ですか? :1.0.1(数字は緑です)

これまでの私の試みは次のとおりです。

Version=1.0.1
textGreen='\e[1;92m' # Green
noColor='\033[0m' # No color
read -p "Is this version ok?: ${textGreen} ${Version} ${noColor} (y/n)" -n 1 -r
if [[ $REPLY =~ ^[Yy]$ ]]
then
...

これはうまくいきません。数値の代わりに変数が表示され、色はまったく表示されません。ありがとうございます。

答え1

readバックスラッシュと括弧などを含むプロンプトを表示するように指示したため、バックスラッシュと括弧などを含むプロンプトが表示されます。実際のエスケープ文字を含むプロンプト文字列を渡します。最も簡単な方法はドル相場

textGreen=$'\e[1;92m' # Green
noColor=$'\033[0m' # No color

答え2

あなたのカラーコードは大丈夫です。読み取りがカラー出力をサポートしているかどうかはわかりません。

私はあなたが読んだ内容を2つのコマンドに分けました。 1つは質問を印刷し、もう1つは答えを受け取ることです。

Version=1.0.1
textGreen='\e[92m'
noColor='\e[0m'
echo -e "Is this version ok?: ${textGreen}${Version}${noColor} (y/n)"
stty raw
REPLY=$(dd bs=1 count=1 2> /dev/null)
stty -raw
if [[ $REPLY =~ ^[Yy]$ ]]
then
...

echo は -e オプションでカラー出力をサポートします。私は今ターミナルプロンプトで元の入力の1文字をキャプチャするためにいくつかのトリックを使用しています。

関連情報