2013-05-30 9 views
8

Sto cercando di colorare una parola nel mezzo di una frase di eco, ma non riesco a ottenere questo risultato.Bash colora una parola usando eco

Questo funziona:

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

Ma questo non lo fa:

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

Che cosa sto facendo male stupidamente? :)

risposta

5

Hai dimenticato un m nel codice di escape ANSI per yellow. Questo funziona:

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

Grazie, non ha ancora sapere che e che funziona !! +1 @nooodl – nsd

+0

Grazie nooodl, ora funziona :) – Zippyduda

16

Molto meglio, utilizzare tput per impostare un colore di primo piano:

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

Avrò un diletto con tput, solo visto di recente, sembra buono. Grazie. – Zippyduda

+1

Ci sono [altri colori e comandi] (http://stackoverflow.com/a/20983251/24874) anche per 'tput'. È un fantastico piccolo strumento per lo scripting di shell. –

Problemi correlati