如何同时使用带有问题和变量的读取命令?

如何同时使用带有问题和变量的读取命令?

如何使用 read 命令能够在部分文本和变量中使用颜色,而无需在 Linux shell 脚本中使用 --dialog 命令?

示例我需要一个问题在 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要显示包含反斜杠 e 括号等的提示,因此它显示包含反斜杠 e 括号等的提示。向其传递包含实际转义字符的提示字符串。最简单的方法是美元报价

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

答案2

你的颜色代码没问题,我只是不确定 read 是否支持彩色输出。

我将您的阅读分为两个命令,一个用于打印问题,一个用于接收答案:

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 选项支持彩色输出。我现在正在使用一点技巧来捕获终端提示符中原始输入的一个字符。

相关内容