问题:
你希望提示用户输入密码,但是你不希望密码回显在屏幕上面。
解决方案:
read -s -p "password: " PASSWD
printf "%b" "/n"
讨论:
-s选项告诉read不要回显用户输入,-p选项则是提示
从用户处读取的输入保存到环境变量$PASSWORD中。
紧随read,使用了printf来打印一个新行,因为read -s关掉回显的同时,换行符也不会显示。更好的方法是把解决方案的两行写成一行,可以防止在拷贝这个代码块的时候只拷贝第一行。
read -s -p "password: " PASSWD ; printf "%b" "/n"
值得注意的一点是当读取用户输入到环境变量中的时候,是以普通文本的方式保存在内存中的,并且可以通过core dump或者/proc/core访问。可能的情况下最好使用SSH进行验证。假想root或者同机器上面其他用户可以通过某种方式得到这个password,最好的方法是恰当的处理这种情况。