如何在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
相关产品推荐
相关产品推荐

