【问题标题】:stdin switching between bash and Java在 bash 和 Java 之间切换标准输入
【发布时间】:2012-10-15 11:51:45
【问题描述】:

我正在编写一个脚本来启动 Java 应用程序并安全地为 Java 应用程序提供密码。密码不应回显到屏幕上,并且不应被列出正在运行的进程的任何人看到。以下脚本适用于此:

echo -n "enter password: "
read -r -s password
java -classpath $CLASSPATH com.myclientscompany.Manage<<EOF
$password
EOF

...Java 程序从标准输入读取密码作为一行。

我面临的问题是,在以这种方式获取密码后,我希望 Java 应用程序通过控制台以交互方式接受用户的进一步输入。就目前而言,随后在 Java 中从标准输入读取的每次尝试都会立即返回 null

有没有办法在脚本结束时将标准输入切换回接受控制台输入?

【问题讨论】:

  • 为什么Manage不直接从STDIN读取?使用&lt;&lt;EOF 将关闭STDIN 形成Java 进程。
  • 因为密码会在输入时回显到屏幕上。

标签: java linux bash stdin


【解决方案1】:

如果您使用的是 1.6 或更高版本,您可以在 Java 程序中使用 Console.readPassword() 输入密码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-05
    • 1970-01-01
    • 1970-01-01
    • 2014-12-28
    • 2013-05-25
    • 1970-01-01
    • 2020-01-26
    • 1970-01-01
    相关资源
    最近更新 更多