SSH를 통해 스크립트를 실행할 때 에코의 색상 코드가 작동하지 않습니다.

SSH를 통해 스크립트를 실행할 때 에코의 색상 코드가 작동하지 않습니다.

모두.

다음 샘플 코드가 있습니다.

#!/bin/bash
echo "[\033[01;32m  green  \033[01;37m]"
echo "[\033[01;31m  red  \033[01;37m]"

이 스크립트를 로컬에서 실행하면 올바른 출력 색상이 나타납니다.

하지만 scp를 통해 다른 호스트에 복사하고 "ssh"를 사용하여 실행하면[이메일 보호됨]"sudo sh color-test.sh"" 이 스크립트는 색상 대신 코드를 인쇄합니다.

원격으로 스크립트를 실행할 때 주의해야 할 사항이 있나요?

답변1

행동

echo '\033'

구현 및/또는 환경에 따라 다릅니다.

UNIX 호환 구현의 경우 ESC 문자 뒤에 NL이 출력되고 일부 다른 구현에서는 ESC 문자 \033뒤에 NL이 출력됩니다. -e이러한 이스케이프 시퀀스를 확장하기 위한 일부 지원 옵션이 있습니다.\033

스크립트에 #! /bin/bashshe-bang이 있지만 스크립트를 로 실행하고 있으므로 sh the-script대신 sh으로 해석됩니다 bash.

대부분의 시스템에서 bash내장 함수는 echo기본적으로 시퀀스를 확장하지 않습니다. 이 작업은 이 옵션이 활성화되거나 사용되는 경우 에만 \x수행됩니다( 및 옵션이 모두 활성화되지 않은 경우).xpg_echo-expg_echoposix

sh이와 관련하여 로컬 구현은 UNIX 규격일 수 있지만(예: dash또는 bash기본적으로 활성화된 옵션으로 컴파일 xpg_echo), 원격 서버에서의 구현은 그렇지 않습니다(예: bash).

이식 가능하고 안정적인 동작을 원한다면,printf대신 사용:

printf '[\33[01;32m  green  \33[01;37m]\n'
printf '[\33[01;31m  red  \33[01;37m]\n'

관련 정보