【问题标题】:bash interactive script pass input [duplicate]bash交互式脚本传递输入[重复]
【发布时间】:2015-06-23 16:45:49
【问题描述】:

我正在运行以下交互式 Jar。

java -jar script.jar
  argument-line-here
  \n 

现在我正在创建一个运行 jar 文件的 bash 脚本。 如何将参数行和构造“\n”传递给这个交互式脚本?这些是脚本的输入行。

This question 有一些答案,expect 尚未安装在我的系统上,我没有 sudo。

edit:.jar 也不返回任何文本。它只需要 2 行。 (一个带有参数,一个带有构象进入)。 我也无法编辑 Java 应用程序。这不是我的剧本。如果可以,我会的。

我尝试过但没有成功的方法。

java -jar myscript.jar
<<< &"argument1 argument2 argument3 argument4" <<< $"\n"

java -jar java -jar myscript.jar > tmp.txt 
expect ""
send "argument1 argument2 argument3 argument4"
expect ""
send "\n"

【问题讨论】:

  • 事情就是这样。我无法编辑此 Java 应用程序的源代码。我只拿到了罐子。
  • 链接副本中的答案告诉您(您确实读过它吗?)是您只需照常传递参数,就像任何其他命令一样。
  • 是的,我试过了。 java -jar myscript.jar argument1 argument2 argument3 argument4 (最后也可以带和不带 \n。但结果是一样的。应用程序仍在等待输入
  • 啊,那么您的问题不是关于“参数”,而是关于正常输入。我会发布一个答案。
  • 你说得有道理,参数这个词在这里有点混乱。将编辑问题

标签: bash command-line-arguments


【解决方案1】:

如果你想重定向程序的正常标准输入,你可以使用所谓的“这里文档”(参见例如the BASH manual page):

java -jar script.jar <<EOF
your input here
EOF

这意味着标准输入(a.k.a.stdin)被重定向,将是“此处文档”中的文本,在本例中为 your input here

【讨论】:

  • 如何指定密码字符串的值。我的意思是调用 console.readPassword() 时的输入。
猜你喜欢
  • 2020-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-19
  • 1970-01-01
相关资源
最近更新 更多