如何从shell脚本获取密码而不回显

我有一个脚本可以自动执行需要访问密码保护系统的进程。 系统通过一个接受用户密码作为参数的命令行程序来访问。

我想提示用户输入密码,将其分配给shell变量,然后使用该变量构建访问程序的命令行(这当然会产生我将处理的流输出)。

我是Bourne / Bash中一个合理的shell编程人员,但我不知道如何接受用户输入,而没有将它回显给终端(或者可能使用'*'字符回显)。

有人能帮忙吗?


这是另一种做法:

#!/bin/bash
# Read Password
echo -n Password: 
read -s password
echo
# Run Command
echo $password

read -s会为你关闭回声。 只需用你想运行的命令替换最后一行的echo即可。


#!/bin/bash
stty -echo
printf "Password: "
read PASSWORD
stty echo
printf "n"

一个班轮:

read -s -p "Password: " password

在Linux(和cygwin)下,这个表单在bash和sh中工作。 不过,它可能不是标准的Unix sh。

有关更多信息和选项,请在bash中键入“帮助阅读”。

$ help read
read: read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
Read a line from the standard input and split it into fields.
  ...
  -p prompt output the string PROMPT without a trailing newline before
            attempting to read
  ...
  -s                do not echo input coming from a terminal
链接地址: http://www.djcxy.com/p/643.html

上一篇: How to get a password from a shell script without echoing

下一篇: Check if a value exists in an array in Ruby