2016-09-16 24 views
0

作爲練習,我做了一個shell腳本,在屏幕上輸出一條彩色消息。我試圖使用ANSI顏色代碼,但內容本身會輸出。在Linux上,爲什麼'echo'不使用ANSI顏色代碼,而是'print'可以?

我的代碼:

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

輸出:

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

但是,使用 '打印' 不工作:

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

輸出(帶白色字體+綠色背景):

SUCCESS! 

我在紅帽企業Linux服務器版本6.5(聖地亞哥)和Raspbian Jessie Lite 4.4上測試了這一點,並得到了相同的結果。據我所知,從我經歷的所有搜索引擎結果來看,'echo'和'print'是相同的,'echo'包含換行符,'print'不包含。爲什麼在這種情況下會有所不同?

回答

2

默認情況下,echo會將其解釋爲字面字符串。你必須告訴回聲適當地解釋反斜槓。

從文檔:

-e使反斜線的解釋轉義

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

這表現的很出色。謝謝一堆!我會upvote你,但因爲我的帳戶是新的,它不會馬上出現:/ – Shelley

+0

您可以將其標記爲答案。 :) – Les

相關問題