2017-05-23 12 views
3
domain="www.google.com" 
echo -e "\e[1;34m"$domain"\e[0m" 

www.google.comを緑の文字で出力すると予想しました。エコーコマンドを使用してエスケープシーケンスを出力する方法

は、代わりに私が効果を持つことができ、あなたはおそらく何ができる一つのことは、引用ANSI-Cを使用することである使用環境やシェルをによって

-e \e[1;34mwww.google.com\e[0m

+0

あなたのシェルは本当にbashですか?私はそれがないと思う。これがスクリプトの場合は、上部に '#!/ bin/bash'を入れてください。 –

+0

@JohnKugelmanはい、シバンはすでにトップにあります。 – user299709

+1

どのように実行していますか? '。/ script.sh'または' sh script.sh'?後者をしないでください。 –

答えて

4

を得た:

echo $'\e[1;34m'${domain}$'\e[0m' 

語の$ 'string'という形式は特別に扱われます。この単語は、 文字列に展開され、円記号エスケープ文字は ANSI C標準で指定された文字に置き換えられます。

https://www.gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html

+1

@ user299709:もう1つの方法は、 '\ e'の代わりにエスケープコード' \ 033'を使うことです(例えば 'echo -e '\ 033 [1; 34m'" $ {domain} "'\ 033 [0m' ')...いくつかのシェルは' \ e'を使用しません。そのような場合には、通常、エスケープ文字のエスケープ方法を使用する必要があります。 –

3

あなたはsh script.shでスクリプトを実行する場合は、明示的シェルではなく、シェバング行の一つとしてshを使用しています。 shbashへのリンクでない場合、それは悪いニュースです。プレーンなshシェルは、echo -eをサポートしていない可能性があります。

./script.sh shebang行でインタープリタを使用する。

+0

これは有効な回答ですが、私はILIの答えを選択しました。これは、スクリプトの実行方法を変更することなく、色を直接表示できるようにしたからです。 – user299709

+0

@ user299709 'bash'特有の機能を使用する場合、' sh'でスクリプトを実行しないでください。 – chepner

+0

あなたはスクリプトを実行する方法を変更する必要があります。 –

関連する問題