我正在尝试使用 bash 脚本在命令行中运行程序。这个程序非常简单。我从命令行调用它,然后x
输入它1
,,,,,filename
5
6
7
但我遇到了一些麻烦:
- 在正确的时间提供正确的输入,即等待输入 5,直到输入 1 启动的进程完成后
- 确保输入实际上到达程序本身。
程序在启动后请求输入,然后我可以从命令行输入它们,所以我想我可以使用 bash 脚本来做到这一点。 (这是我的第一个 bash 脚本。在解决这个问题之前我什至没有说“Hello world”。)
我尝试过使用 await
并查看了until
类似的东西。你们有什么建议吗?
答案1
我还不能发表评论,所以将其作为答案发布,无论多么不完整,因为OP没有发布足够的数据。
您可能想调查一下expect
。它本身就是一种脚本语言,但可以混合使用bash
(尽管不鼓励)。最简单的形式是这样的:
#!/usr/bin/expect
expect "Prompt: "
send "my input\r"
expect eof
\r
意味着return
(我认为),只是一把enter钥匙。
因此,例如expect
您的程序的脚本可能如下所示:
#!/usr/bin/expect
expect "Provide 1: "
send "1\r
expect "Provide filename: "
send "foobar.txt\r"
expect "Provide 5: "
send "5\r"
# and so on...
expect eof
请提供您迄今为止拥有的代码以及程序“x”的示例输出提示,以便我们可以根据您的需求定制答案。