我有一个用户可以使用命令行运行的程序。一旦运行,它就会接收并处理来自键盘的命令。可以使用来自磁盘的输入来启动程序,如下所示$ ./program < startScript.sh
:但是,一旦脚本完成运行,程序就会退出。有没有一种方法可以使用磁盘输入启动程序<
,它不会退出程序并允许读取额外的键盘输入?
问问题
61 次
4 回答
1
(cat foo.txt; cat) | ./program
即,创建一个子shell(这就是括号的作用),它首先输出 foo.txt 的内容,然后复制用户键入的任何内容。然后,获取此子外壳的组合输出并将其通过管道传输到程序的标准输入中。
请注意,这也适用于其他组合。假设你想启动一个总是问同样问题的程序。最好的方法是使用“expect”并确保问题没有改变,但为了快速解决问题,您还可以执行以下操作:
(echo y; echo $file; echo n) | whatever
于 2013-03-10T08:06:14.297 回答
0
在你的程序中使用 system("pause")(在 bash 中它只是 "pause"),这样它就不会立即退出。
有替代方案,例如
- 假读
- 无限循环
- sigsuspend
- 还有很多
于 2013-03-10T08:01:16.707 回答
0
这取决于如何program
编码。这不能通过在 中编写代码来实现startScript.sh
,如果这是您想要实现的。
你可以做的是callingScript.sh
先写一个请求输入然后调用program < startScript.sh
.
于 2013-03-10T08:04:13.053 回答
0
为什么不尝试这样的事情
BODY=`./startScript.sh`
if [ -n "$BODY" ]
then cat "$BODY" |./program
fi
于 2013-03-10T08:11:24.683 回答