2016-09-16 3 views
0

練習として、スクリーン上に色付きのメッセージを出力するシェルスクリプトを作成しました。 ANSIカラーコードを使用しようとしていましたが、コンテンツ自体が出力されます。Linuxでは、ANSIカラーコードを 'エコーする'ことはできませんが、なぜ 'プリント'できますか?

マイコード:

#!/bin/bash 
echo "\033[1;37;42m SUCCESS! \033[0m" 

が出力:(白のフォント+緑の背景色)

#!/bin/bash 
print "\033[1;37;42m SUCCESS! \033[0m \n" 

出力:

\033[1;37;42m SUCCESS! \033[0m 

しかし、 '印刷' を使用して作業を行います

SUCCESS! 

私はこれをRed Hat Enterprise Linux Server 6.5(Santiago)とRaspbian Jessie Lite 4.4でテストしたところ、同じ結果でした。私が知っている限り、そして私が行ったすべての検索エンジンの結果から、 'echo'と 'print'は改行を含む 'echo'と 'print'を除いて同じです。この場合、なぜ違うのでしょうか?

答えて

2

デフォルトでは、echoはそれを文字通り文字列として解釈します。バックスラッシュを適切に解釈するには、echoを指定する必要があります。ドキュメントから

:バックスラッシュの解釈を可能にする-e

は素晴らしく働い

echo -e "\033[1;37;42m SUCCESS! \033[0m" 
+0

をエスケープします。本当にありがとう!私はあなたをアップアップしますが、私のアカウントは新しいので、すぐには表示されません:/ – Shelley

+0

あなたは答えとしてマークすることができます。 :) – Les

関連する問題