为用户输入加下划线



我打算在用户输入的下划线下划线,但经过研究,我仍然找不到方法。

到目前为止,这是我从研究中得到的,但它仍然不起作用。有人知道怎么解决吗?或者更确切地说是正确的方法?

如果我使用read-p"What is your name:"name而不是下面的名称,该怎么办?正如我对输出的期望。

你叫什么名字?(用户输入并加下划线)

function underlineInput()
{
PS1='33[4;47;40m'
}
function UNunderlineInput()
{
PS1='33[0;47;40m'
}
function hi()
{
echo "Please enter your name: "
underlineInput
read input
underlineInput
}

感谢那些提前提供帮助的人!干杯

点击此处查看此链接

但它只是:

$ echo -e "33[4mThis is a underlined line.33[0m"

关键部分是要下划线的33[4m和要将其改回的33[0m

将转义序列放在提示的末尾,打开下划线,然后将其发送回正常序列:

read -p $'Please enter your name: 33[4m' name
printf '33[0m' # Use printf instead of echo to avoid newline, and it translates escape without $''

顺便说一句,如果你想让这个脚本也能在其他类型的终端上工作,你可以使用terminfo数据库来获得相关的转义(/whathing)序列。下划线打开和关闭的终端功能名称为"smul"one_answers"rmul":

read -p "Please enter your name: $(tput smul)" name
tput rmul

相关内容

  • 没有找到相关文章

最新更新