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