Bash:在提示中使用颜色

时间:2013-04-07 23:35:25

标签: bash colors

我试图用彩色的用户发明,而没有单独的答案。

我目前有这个:

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

那我该怎么办呢?

还有什么方法可以让颜色得到响应吗?

1 个答案:

答案 0 :(得分:3)

printf "${GREEN}==>${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n"

如果您不想换行,请不要在格式字符串的末尾添加\ n。

你也可以使用阅读:

read_msg() {
  read -p "${GREEN}==>${ALL_OFF}${BOLD} $1${ALL_OFF}"
}
until [[ $REPLY = [yY] ]]; do
    read_msg "Done (y/n)?"
done