질문과 변수에 동시에 읽기 명령을 사용하는 방법은 무엇입니까?

질문과 변수에 동시에 읽기 명령을 사용하는 방법은 무엇입니까?

Linux 쉘 스크립트에서 --dialog 명령을 사용하지 않고 read 명령을 사용하여 텍스트 및 변수의 일부에 색상을 사용하려면 어떻게 해야 합니까?

예 다음과 같이 bash 스크립트에 문제가 나타나야 합니다.

이 버전 괜찮나요? :1.0.1(숫자는 녹색입니다)

지금까지 내 시도는 다음과 같습니다.

Version=1.0.1
textGreen='\e[1;92m' # Green
noColor='\033[0m' # No color
read -p "Is this version ok?: ${textGreen} ${Version} ${noColor} (y/n)" -n 1 -r
if [[ $REPLY =~ ^[Yy]$ ]]
then
...

이것은 작동하지 않습니다. 숫자 대신 변수가 표시되고 색상이 전혀 표시되지 않습니다. 감사해요.

답변1

read백슬래시와 괄호 등이 포함된 프롬프트를 표시하라고 지시했기 때문에 백슬래시와 괄호 등이 포함된 프롬프트가 표시됩니다. 실제 이스케이프 문자가 포함된 프롬프트 문자열을 전달하세요. 가장 간단한 방법은달러 시세.

textGreen=$'\e[1;92m' # Green
noColor=$'\033[0m' # No color

답변2

귀하의 색상 코드는 괜찮습니다. 읽기가 컬러 출력을 지원하는지 잘 모르겠습니다.

나는 당신이 읽은 내용을 두 개의 명령으로 나누었습니다. 하나는 질문을 인쇄하고 다른 하나는 답변을 수신하는 것입니다.

Version=1.0.1
textGreen='\e[92m'
noColor='\e[0m'
echo -e "Is this version ok?: ${textGreen}${Version}${noColor} (y/n)"
stty raw
REPLY=$(dd bs=1 count=1 2> /dev/null)
stty -raw
if [[ $REPLY =~ ^[Yy]$ ]]
then
...

echo는 -e 옵션을 통해 컬러 출력을 지원합니다. 나는 지금 터미널 프롬프트에서 원래 입력의 한 문자를 캡처하기 위해 약간의 트릭을 사용하고 있습니다.

관련 정보