0

我试图在没有单独一行的答案的情况下要求用户发明颜色。

我目前有这个:

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

那我怎么能不这样做呢?

还有什么方法可以使颜色响应吗?

4

1 回答 1

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
于 2013-04-07T23:41:26.260 回答