0

我有一个用户可以使用命令行运行的程序。一旦运行,它就会接收并处理来自键盘的命令。可以使用来自磁盘的输入来启动程序,如下所示$ ./program < startScript.sh:但是,一旦脚本完成运行,程序就会退出。有没有一种方法可以使用磁盘输入启动程序<,它不会退出程序并允许读取额外的键盘输入?

4

4 回答 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 回答