2013-05-30 27 views
8

Tôi muốn ghi lại một từ ở giữa một câu echo, nhưng dường như không thể đạt được điều này.Màu Bash một từ sử dụng tiếng vang

này hoạt động:

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

Nhưng điều này không:

#!/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." 

gì tôi ngớ ngẩn làm sai? :)

Trả lời

5

Bạn đã quên m trong mã thoát ANSI của mình cho yellow. Đây hoạt động:

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

Cảm ơn, didnt biết điều đó và làm việc !! +1 @nooodl – nsd

+0

Cảm ơn nooodl, hoạt động ngay bây giờ :) – Zippyduda

16

Tốt hơn nhiều, sử dụng tput để thiết lập một màu foreground:

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

Tôi sẽ có một vọc với tput, chỉ nhìn thấy nó gần đây, có vẻ tốt. Cảm ơn. – Zippyduda

+1

Có [màu sắc và lệnh khác] (http://stackoverflow.com/a/20983251/24874) cho 'tput'. Đó là một công cụ nhỏ tuyệt vời cho kịch bản lệnh shell. –

Các vấn đề liên quan