2016-09-09 2 views
0

Mac에서 Bash 3.2를 실행 중입니다. 터미널에서 나는 다음과 같은 echo 명령을 입력과 녹색 배경에 파란색 글꼴로 텍스트를 반환 :Echo 명령 구문 - Bash에서 ANSI 색상 스타일 지정

echo "\033[34;42mThis is colored.\033[0m This is not colored." 

나는 bash는 스크립트에서이 명령을 캡처 할, 그러나 제대로 표시 할 수 없습니다.

는 비난 아주 새로운, 그래서 여기 내가 지금까지 발견 한 내용은 다음과 같습니다

  • 나는 작은 따옴표가 '' 수단 내가
  • 그것은 필요가 원하는 것을하지 않은 서면으로 문자를 표시 것을 알고있다 인터프리터는
  • 그때 그래서이의 echo $var

을 입력하여 변수를 표시 명령으로 실행 알 수 있도록 var=$(command) 형식으로 bash 스크립트에서이 명령을 작성하는 적절한 방법은 무엇입니까? 내가 bash의 초보자로서 알아야 할 다른 중요한 것들이 있습니까? 감사. 단지 설정하지 왜 my.sh

#!/bin/bash 

teepee=$(echo "\033[34;42mThis is colored.\033[0m This is not colored.") 
echo $teepee 
+0

(더 많은 정보 here을 찾을 수) 백 슬래시 해석을 가능하게하는 echo 명령에 -e 옵션을 추가하는 데 필요한 Teepee 대신 서브 쉘에서 무의식적으로 echo를 사용합니까? – 123

+0

@ 123 나는 당신의 질문을 이해할 수 있다고 생각하지 않는다. 그러나'a)'는 스크립트의 요점이 아니기 때문에 미래에 더 빠르고 쉽게 사용할 수있는 명령 그룹을 얻을 수있다. 'b)'teepee를 문자열로 설정했지만 스타일을 지정하기 위해'echo' 명령이 필요합니다. 다시 한번, 스크립트에서 동봉하여 나중에 호출 할 수있는 변수로 만들고 싶습니다. – Kervvv

답변

0

는 일부 파고 후, 나는

#!/bin/bash 

teepee=$(echo -e "\033[34;42mThis is colored.\033[0m This is not colored.") 
echo $teepee #works as expected 
+0

OSX에서 echo의 매뉴얼 페이지는 -e 매개 변수를 언급하지 않았지만 정확합니다. 기본적으로 echo는 백 슬래시를 해석하지 않습니다. – Dorian

+1

'teepee = $ '\ e [34; 42m 불투명 한 서브 쉘을 피하기 위해 색깔이. \ e \ [0m 색깔이 없습니다.] – chepner

+0

@ 도리 안 그것은 절대적으로 문서화되어 있습니다 : "-e 옵션이 외부 프로그램이 아닌'bash' 내장 명령'echo'입니다 (* 이스케이프 된 문자를 필요에 따라 처리하기 때문에 * -e는 필요 없습니다 *). POSIX 표준에 따라)'bash' 내장은 분명히 * POSIX 호환이 아닙니다. (그렇게 만들 수있는 빌드 타임 옵션이 있긴하지만'echo'는 엉망이며 원하는 경우'printf'로 대체해야합니다 어떤 종류의 예측 가능한 행동.) – chepner

관련 문제