2016-07-07 6 views
0

色付きのプロンプトをbashで表示したい。 通常、私は例えば、次のように次の操作を行います。読み取りコマンドで色と変数を使用する

read -p $'\033[1;32m hello world?' helloWorld 

これはうまく動作しますが、ない変数がプロンプト文字列に展開されていません。今、私は色と拡張変数をしたいが、これは動作しません:

read -p $'\033[1;32m hello $thisVariableIsNotExpanded ?' helloWorld 

私はちょうどecho -e代わりのread -pを使用してみましたが、これは私が望んでいない改行が追加されます。

私はどのように読み取りプロンプトで色と変数の拡張を行うことができますか?

+0

色のコードを変数に入れておくと、もっと楽になります。 – 123

答えて

0

これは最適な解決策ではありませんが、echo -neは改行なしでカラーコードを解釈します。

3

二重引用符を使用変数が展開されますよう:

read -p $'\033[1;32m hello '"$thisVariableIsNotExpanded"'?' 
#       ^      ^

は、アクションでそれを参照してください。

$ thisVariableIsNotExpanded="gexicide" 
$ read -p $'\033[1;32m hello '"$thisVariableIsNotExpanded"'?' helloWorld 
hello gexicide? 
#^
# this is green 
1

あなたはecho -nを使用して、読むことができます:

echo -ne "\033[1;32m hello $thisVariableIsNotExpanded ?" 

それとも、変数を使用してプロンプトを作成できます。

START=$'\033[1;32m hello ' 
OTHER="${START}$thisVariableIsNotExpanded ?" 
1

エスケープコードを取得するには、tputを正確に1回使用することをお勧めします。エスケープコードには端末固有のリテラルを使用することをお勧めします。すべての端末が同じコードを使用するわけではありません。次に、通常の二重引用符を使用して、通常の方法で変数を補間します。

bold="`tput bold`" 
fg_green="`tput setaf 2`" 
sgr0="``tput sgr0``" 

read -p "${bold}${green}hello $thisVariableIsExpanded ?${sgr0}' helloWorld 

注意 - テキストの前景色を設定している場合は、背景色がどのようなものか考えましたか?緑色は赤色に、緑色は緑色には不可能です。

関連する問題