是否可以使用文件输入从命令行启动程序而不终止程序?

时间:2013-03-10 07:59:12

标签: bash shell

我有一个用户可以使用命令行运行的程序。一旦运行,它就会从键盘接收并处理命令。可以使用磁盘输入启动程序,如:$ ./program < startScript.sh。但是,一旦脚本运行完毕,程序就会退出。是否有办法使用<从磁盘输入启动程序,该输出不会退出程序并允许读取其他键盘输入?

4 个答案:

答案 0 :(得分:1)

(cat foo.txt; cat) | ./program

即,创建一个子shell(这是括号所做的),它首先输出foo.txt的内容,然后只复制用户输入的内容。然后,获取此子shell的组合输出并将其传递给程序的stdin。

请注意,这也适用于其他组合。假设您想要启动一个始终询问相同问题的程序。最好的方法是使用“expect”并确保问题没有改变,但为了快速解决方法,你也可以这样做:

(echo y; echo $file; echo n) | whatever

答案 1 :(得分:0)

在程序中使用系统(“暂停”)(在bash中它只是“暂停”),以便它不会立即退出。

还有其他选择,例如

  • 虚拟阅读
  • 无限循环
  • sigsuspend
  • 更多

答案 2 :(得分:0)

这取决于program的编码方式。如果您正在尝试实现这一目标,则无法通过在startScript.sh中编写代码来实现这一目标。

你可以做的是写一个callingScript.sh,先要求输入,然后调用program < startScript.sh

答案 3 :(得分:0)

为什么不尝试这样的事情

BODY=`./startScript.sh`
if [ -n "$BODY" ]
    then cat "$BODY" |./program
fi