2013-05-30 16 views
8

Chcę, aby colourize jedno słowo w środku zdanie echo, ale nie wydaje się, aby osiągnąć to.Bash kolor jedno słowo za pomocą echa

to działa:

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

Ale tego nie robi:

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

Co ja głupio robi źle? :)

Odpowiedz

5

Zapomniałeś m w kodzie identyfikacyjnym ANSI dla yellow. To działa:

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

Dzięki, nie wiedziałem, że i że działa !! +1 @nooodl – nsd

+0

Dzięki nooodl, działa teraz :) – Zippyduda

16

Znacznie lepiej użyć tput ustawić kolor pierwszoplanowy:

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

Będę miał zajebisty z tput, tylko ostatnio widziałem, wygląda dobrze. Dzięki. – Zippyduda

+1

Istnieją również inne kolory i polecenia (http://stackoverflow.com/a/20983251/24874) również dla 'tput'. To niesamowite małe narzędzie do tworzenia skryptów powłoki. –

Powiązane problemy