我有一个用户可以使用命令行运行的程序。一旦运行,它就会从键盘接收并处理命令。可以使用磁盘输入启动程序,如:$ ./program < startScript.sh
。但是,一旦脚本运行完毕,程序就会退出。是否有办法使用<
从磁盘输入启动程序,该输出不会退出程序并允许读取其他键盘输入?
答案 0 :(得分:1)
(cat foo.txt; cat) | ./program
即,创建一个子shell(这是括号所做的),它首先输出foo.txt的内容,然后只复制用户输入的内容。然后,获取此子shell的组合输出并将其传递给程序的stdin。
请注意,这也适用于其他组合。假设您想要启动一个始终询问相同问题的程序。最好的方法是使用“expect”并确保问题没有改变,但为了快速解决方法,你也可以这样做:
(echo y; echo $file; echo n) | whatever
答案 1 :(得分:0)
在程序中使用系统(“暂停”)(在bash中它只是“暂停”),以便它不会立即退出。
还有其他选择,例如
答案 2 :(得分:0)
这取决于program
的编码方式。如果您正在尝试实现这一目标,则无法通过在startScript.sh
中编写代码来实现这一目标。
你可以做的是写一个callingScript.sh
,先要求输入,然后调用program < startScript.sh
。
答案 3 :(得分:0)
为什么不尝试这样的事情
BODY=`./startScript.sh`
if [ -n "$BODY" ]
then cat "$BODY" |./program
fi