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

使用`read -s`隐藏密码输入后如何添加换行符?

解决curl输出紧跟密码输入行的问题

原执行脚本如下:

#!/bin/bash

curl -I \
  -u $(read -p "`echo $'\n'`User: "; echo $REPLY):$(read -s -p "`echo $'\n'`Pass: "; echo $REPLY;) \
  https://example.com \
  -s

执行后密码输入隐藏的表现符合预期,但curl输出会直接紧跟在Pass:文本后,呈现效果如下:

User: a
Pass: HTTP/2 200
content-encoding: gzip

我们需要让curl输出从密码行的下一行开始,目标效果为:

User: a
Pass: 
HTTP/2 200
content-encoding: gzip

解决方法

问题根源在于read -s命令:它会关闭输入回显,但用户输入完成按下回车后,不会自动输出换行符。只需在密码输入完成后手动添加换行即可。

方案1:直接修改原脚本

在密码输入的read命令末尾添加echo语句,用于输出换行:

#!/bin/bash

curl -I \
  -u $(read -p "`echo $'\n'`User: "; echo $REPLY):$(read -s -p "`echo $'\n'`Pass: "; echo $REPLY; echo) \
  https://example.com \
  -s

方案2:拆分输入逻辑(更易读)

把用户名和密码的输入步骤单独拆分,代码逻辑更清晰,维护更方便:

#!/bin/bash

read -p "`echo $'\n'`User: " username
read -s -p "`echo $'\n'`Pass: " password
echo  # 手动输出换行,分隔密码行和curl输出

curl -I -u "$username:$password" https://example.com -s

内容的提问来源于stack exchange,提问作者Jürgen Thelen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 23:07:33