如何向 Linux 命令中的提示符传递多个参数?

如何向 Linux 命令中的提示符传递多个参数?

如果 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 脚本后,该文件将被加密。

https://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/wls/12c/15-BootProp--4471/bootproperties.htm

相关内容