使用 linux 脚本将输入传递给 java 程序

问题描述 投票:0回答:0

我正在做一个项目,我必须创建一个 shell 脚本,当我执行另一个 shell 脚本时可以输入东西。例如,我有一个 shell 脚本调用 ABC.sh,它会要求用户输入 3 密码才能启动服务。 ABC里面是一个脚本,会执行一个java程序,我拿不到源代码,只能说明脚本的目的是执行java程序。执行脚本时,它会要求用户输入 abc123 并按回车键,以便填写第二个输入,这也是 abs123,在按下回车键后,需要第三个输入,这也是 abc123。回车后开始运行java程序。

我这里的工作是创建一个 shell 脚本,它将执行 ABC.sh 并自动填写 abc123 三个不同的时间,以便 java 程序开始运行。

在我开始这个项目之前,我做了一个演示,如下所示。它工作正常,因为 Test.sh 是一个将读取输入的 shell 脚本。

./Test.sh <<EOF
abc123
abc123
abc123
EOF

然后我意识到这个方法只适用于 linux 和 linux passing 所以当我尝试将 shell 脚本放到 ABC.sh 上时它从来没有工作,当我检查日志文件时它说密码读取错误。

我尝试的第二种方法是使用 mkfifo 并通过管道输入,我所做的是

mkfifo path/srv-input

echo "abc123" >> path/srv-input
echo "abc123" >> path/srv-input
echo "abc123" >> path/srv-input

echo ^Z path/srv-input

tail -f path/srv-input | java program (Due to privacy problem i cannot show the whole path)

bg

disown $!

这个方法也不行。我尝试使用 set x 来查看发生了什么,它只回显 abc123 一次,然后停止并卡在那里。

我正在寻找可以帮助我完成这个项目的方法。我最后的选择是放弃并在 java 程序中硬编码输入。

linux shell scripting autofill
© www.soinside.com 2019 - 2024. All rights reserved.