首页 > 解决方案 > 使用“读取值”时如何在窗口底部设置一行并且不打印回车?

问题描述

我正在做一个小小的 bash 聊天。所以我想在窗口的底部有一行用户可以输入他的消息。当他按下“输入”时,消息被发送并打印在最后一行的正上方。这条线不能动!像这样

User A sent: xxxx
User B sent: xxxx
User C sent: xxxx
User A sent: xxxx
User B sent: xxxx
Write your message here : YYYY  *hit enter*
================================================
User A sent: xxxx
User B sent: xxxx
User C sent: xxxx
User A sent: xxxx
User B sent: xxxx
You: YYYY
Write your message here : 

read userinput用来获取输入,但是当他按“输入”发送消息时会出现换行符。

所以我尝试了这个:

echo -e "\033[2A"; #cursor up 2 lines; echo -en "\r$i"; #remove carriage returns;

我写了“你好”和“再见”,这是怎么回事!我不知道如何解决这个问题。有人有解决方案吗?谢谢

Helloge: Hello
Byesage: Bye
message:

标签: bashshellsh

解决方案


我建议你看看Cursor Movement。您需要将光标向右移动,\033[9C如下所示:

echo -e "\033[2A\033[9C$var_with_text_here"

如果这不是您真正需要的,那么请更好地解释,我会编辑我的答案:)

例子:

[user@host ~]$ echo "Message: bla"
Message: Hello
[user@host ~]$ echo -e "\033[2A\033[9CHello"

推荐阅读