You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Bash脚本中的read函数不输出换行符?

在Bash中使用read -e时禁止输出换行符

你使用stty -echonl无效的核心原因是:read -e启用了readline库,它会在用户按下回车时自动输出换行,直接覆盖了stty的配置。

以下是两种可行的解决方案:

方案1:保留read -e的编辑功能,抵消换行效果

这个方法既保留了read -e的命令行编辑能力(比如方向键修改输入),又能消除回车后的换行:

#!/bin/bash
# 保存终端原始设置,避免影响后续操作
old_stty=$(stty -g)
# 关闭终端回显换行
stty -echonl
# 读取输入(支持命令行编辑)
read -e entered
# 将光标移回当前行开头,抵消readline输出的换行
printf "\r"
# 恢复终端原始设置
stty "$old_stty"

方案2:去掉read -e参数,直接生效stty设置

如果不需要命令行编辑功能,直接去掉-e参数,stty -echonl就能正常工作:

#!/bin/bash
stty -echonl
read entered

内容的提问来源于stack exchange,提问作者Sergey Belenkov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 18:04:57