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

如何在Bash的dialog表单中单独隐藏密码输入字段?

如何在dialog表单中仅隐藏密码字段输入?

我在Bash脚本中使用dialog工具创建多字段表单,希望只隐藏登录密码的输入内容。当前使用的命令如下:

dialog  --title "Server address and login credentials" --form "$msg" 14 60 5 \
"Server Address:   " 1 1 "" 1 20 30 50 \
"Server Port:   " 2 1 "" 2 20 30 50 \
"Gateway Address:" 3 1 "" 3 20 30 50 \
"Logon Name:   " 4 1 "" 4 20 30 50 \
"Logon Password:   " 5 1 "" 5 20 30 50

虽然dialog支持--passwordbox选项,但它会隐藏所有字段,不符合需求。尝试过read -s -p但无效,了解到可以用--password-mask功能,但不清楚具体用法。请问如何实现仅隐藏登录密码的输入?


要实现仅隐藏表单中的密码字段,你可以利用dialog表单字段的密码标记参数,配合可选的--password-mask自定义掩码字符:

核心实现方式

在--form的密码字段定义末尾添加1(密码标记),该字段的输入就会被自动隐藏。如果需要替换默认的掩码字符(通常是星号*),可以加上--password-mask参数指定自定义字符。

修改后的命令示例

dialog --title "Server address and login credentials" \
       --password-mask "*" \  # 可选:自定义掩码字符,去掉则使用默认掩码
       --form "$msg" 14 60 5 \
"Server Address:   " 1 1 "" 1 20 30 50 \
"Server Port:   " 2 1 "" 2 20 30 50 \
"Gateway Address:" 3 1 "" 3 20 30 50 \
"Logon Name:   " 4 1 "" 4 20 30 50 \
"Logon Password:   " 5 1 "" 5 20 30 50 1  # 末尾的1标记该字段为密码字段

关键说明

  • 密码字段末尾的1是核心:它告诉dialog这个字段需要隐藏输入内容。
  • --password-mask "*"可替换为任意你想要的字符,比如--password-mask "●",不需要自定义的话直接删除该参数即可使用默认掩码。
  • 其余字段保持原有定义,不会被隐藏,完全满足多字段中仅隐藏密码的需求。

内容的提问来源于stack exchange,提问作者shiv chittora

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 04:30:08