我必须运行一个脚本,它需要 app. 初始化 1 分钟,然后询问用户的输入。
如果我喜欢
bash-3.2$ java -d64 -jar myJarFile.jar < input_file
它立即接受输入,当 myJarFile.jar 实际需要输入时,它什么也得不到。
那么,我该如何解决呢?
我必须运行一个脚本,它需要 app. 初始化 1 分钟,然后询问用户的输入。
如果我喜欢
bash-3.2$ java -d64 -jar myJarFile.jar < input_file
它立即接受输入,当 myJarFile.jar 实际需要输入时,它什么也得不到。
那么,我该如何解决呢?
使用期望脚本。
例子:
#!/usr/bin/expect
set timeout -1
spawn ./run.sh
expect "\[Next]> " {send "Next\r"}
interact
在此示例中,它运行 run.sh 并在终端“[Next]>”上异步等待此字符串。每当它在终端上收到此消息时,它都会将 Next 作为输入发送到脚本。
根据您的提示,您正在使用BASH,因此您应该能够使用包含sleep
. 例子:
$ seq 1 20 >numbers
$ cat < <(sleep 5; cat numbers)
# 5 second pause and then the contents of the 'numbers' file is output
因此,使用您的命令,您将运行:
java -d64 -jar myJarFile.jar < <(sleep 120; cat input_file)