如果 Linux 命令只有一个提示符,那么我们可以按如下方式处理它 -
echo "password" | sudo -S ls
但startWebLogic.sh
有两个提示,一个提示用户名,另一个提示密码以启动 WebLogic 服务器。
我尝试过
sh startWebLogic.sh << EOF
> user
> password
> EOF
但最终
<Aug 31, 2020 7:04:59 PM GMT> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to FORCE_SHUTTING_DOWN.>
Stopping Derby server...
Derby server stopped.
您能否建议我如何在单个命令中传递两个提示参数?
答案1
这是因为当程序 cat 退出时,stdin 会用 close() 函数关闭。一个巧妙的技巧是在 bash 中使用 cat + 括号,试试这个:
(echo -en "user\x0Apass\x0A" ; cat) | sh startWebLogic.sh
更新:您想要做的是将整个过程守护进程化,但同时不要停止接受输入(即,在您想要/需要时接受输入)?我说对了,是吗?如果是这样,我可能会为您提供更多帮助,但破坏并不总是在教学。
答案2
如果您的最终目标是启动 weblogic 服务器并提供用户和密码,weblogic 还有另一个功能,您可以创建一个名为 boot.properties 的文件,并在其中提供用于启动 webogic 的用户用户名和密码。startWebLogic.sh 脚本会检测文件的存在,并且不会要求用户提供任何信息。仅供参考,在您创建文件并运行 startWebLogic.sh 脚本后,该文件将被加密。