0
我试图在没有在单独行中回答的情况下询问用户发明的颜色。Bash:在提示中使用颜色
目前,我有这样的:
msg() {
local mesg=$1; shift
printf "${GREEN}==>${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n"
}
ALL_OFF="$(tput sgr0)"
BOLD="$(tput bold)"
GREEN="${BOLD}$(tput setaf 2)"
[...]
until [[ $REPLY = [yY] ]]; do
msg "Done (y/n)?" && read -p ""
done
但是如前所述,问题是它把应对新行:
==> Done (y/n)?
y
所以,我怎么能这样做呢?
还有什么方法可以在颜色上有响应吗?
通常你会称之为“提示”,而不是“问题”。你尝试过ANSI逃脱吗? http://stackoverflow.com/a/3586005/1180785 – Dave 2013-04-07 23:38:11
@Dave,你的意思是[这](http://stackoverflow.com/a/3585889/1821548)?这不是一个C程序。 – Det 2013-04-08 00:04:55
@Dave'tput'负责查找转义序列 - 如果您的终端是ANSI,则会返回ANSI代码;如果这些代码是合适的,则会返回ANSI代码;如果您的终端具有返回值,则返回值不变不支持所需的颜色/模式/ whatnot。使用它比使用ANSI编码更好,因此完全不支持非ANSI终端。 – 2013-04-08 04:20:14