如何使bash脚本要求input密码?

我想用密码保证程序的执行。

我该怎么做bash?

stty_orig=`stty -g` # save original terminal setting. stty -echo # turn-off echoing. read passwd # read the password stty $stty_orig # restore terminal setting. 

这个命令将从标准input读入var pwd (禁止echo):

 IFS= read -s -p Password: pwd 

取消设置IFS将允许在密码中引入和结尾的空白(在某些环境中可能会支持这种空白,所以最好在脚本input用户凭据期间支持它)

要validation前导/尾随空白处理是否正确,您可以使用:

 echo -n "$pwd" | hexdump -C 

注意:不要使用真正的密码,因为它会转储到控制台!

HT:Ron DuPlain提供关于IFS未定的附加信息。

如果你需要抓取一个密码来作为参数提供给一个程序,那么独angular兽build议closures回声是很好的。
在脚本中进行passwd检查不起作用 – 如果用户可以执行bash脚本,则他们也有权读取它并查看密码。

如果你想只允许拥有passwd的人运行一个程序,那么安全的方法是创build一个拥有该程序的新用户帐户,并有一个使用“sudo”作为该用户运行该程序的脚本 – 它会提示用户以一种安全的方式passwd。