使用bash处理交互式命令行程序

时间:2014-08-25 02:00:07

标签: bash shell command-line-interface

我尝试使用交互式程序自动完成某些工作。干 SplitsTree +g 启动程序的CLI交互式版本,我通常会以交互方式输入该程序:

EXECUTE FILE=Asexual_randomSub.nxs
UPDATE
SAVE FILE=output.network
QUIT

如何输入这些命令?只需将上述6行复制到.sh文件中并执行它就不起作用。

3 个答案:

答案 0 :(得分:2)

通常,这些命令中的许多命令都具有非交互模式,您可以使用该模式从源文件中读取命令。这将是首选方式。

另一种选择是尝试使用here文档或将输入传递给stdin。

第三种方法是使用expect之类的东西并手动完成整个输入业务。这是片状但有时是唯一的选择。

答案 1 :(得分:1)

定界符。

#!/bin/sh

SplitsTree +g << EOF
EXECUTE
FILE=Asexual_randomSub.nxs
UPDATE
SAVE
FILE=output.network
QUIT
EOF

答案 2 :(得分:1)

通过-x参数传递命令对我有用。

SplitsTree +g -x 'EXECUTE FILE=in.nex; UPDATE; SAVE FILE=out.nex; QUIT'
相关问题