Jür*_*zel 77
此命令将从stdin 读取var pwd(禁用echo):
IFS= read -s  -p Password: pwd
取消设置IFS将允许密码中的前导和尾随空格(在某些环境中可能支持这种空格,因此最好在脚本输入用户凭据期间支持它)
要正确处理前导/尾随空白,您可以使用:
echo -n "$pwd" | hexdump -C
注意:不要使用真实密码,因为它转储到控制台!
HT:Ron DuPlain关于IFS取消设置的更多信息.
cod*_*ict 52
stty_orig=$(stty -g) # save original terminal setting.
stty -echo           # turn-off echoing.
IFS= read -r passwd  # read the password
stty "$stty_orig"    # restore terminal setting.
如果您需要获取 passwd 作为参数提供给程序,那么 unicorns 建议关闭回声是好的。
在脚本中进行密码检查不起作用 - 如果用户可以执行 bash 脚本,他们也有权阅读它并查看密码。
如果您只想允许拥有密码的人运行程序,那么安全的方法是创建一个拥有该程序的新用户帐户,并拥有一个使用“sudo”以该用户身份运行该程序的脚本 - 它会提示您用户以安全的方式密码。