2013-05-30 3 views
8

エコーセンテンスの途中で1つの単語を着色したいですが、これを達成できないようです。エコーを使用したバッシュカラーの1語

これは動作します:

#!/bin/bash 
wipe="\033[1m\033[0m" 
yellow='\E[1;33' 
echo -e "$yellow" 
echo Hello World 
echo -e "$wipe" 

しかし、これはしません:私は愚かな間違っ

#!/bin/bash 
wipe="\033[1m\033[0m" 
yellow='\E[1;33' 
black="40m" 
echo -e "Output a $yellow coloured $wipe word." 
# or 
echo -e "Output a ${yellow} coloured ${wipe} word." 

何をしているのですか? :)

答えて

5

yellowのANSIエスケープコードでmを忘れてしまった。これは動作します:

yellow='\E[1;33m' 
+0

おかげで、それを知らなかったし、それが動作します! +1 @nooodl – nsd

+0

ありがとうnooodlは、今働いています:) – Zippyduda

16

はるかに良い、前景色を設定するtputを使用します。

textreset=$(tput sgr0) # reset the foreground colour 
red=$(tput setaf 1) 
yellow=$(tput setaf 2) 

echo "Output a ${yellow} coloured ${textreset} ${red} word ${textreset}." 
+0

私はtputとのダブールを持って、それは最近見ただけで、よく見えます。ありがとう。 – Zippyduda

+1

'tput'のための[その他の色とコマンド](http://stackoverflow.com/a/20983251/24874)もあります。シェルスクリプトのためのすばらしいツールです。 –

関連する問題