我尝试使用交互式程序自动完成某些工作。干
SplitsTree +g
启动程序的CLI交互式版本,我通常会以交互方式输入该程序:
EXECUTE FILE=Asexual_randomSub.nxs
UPDATE
SAVE FILE=output.network
QUIT
如何输入这些命令?只需将上述6行复制到.sh文件中并执行它就不起作用。
答案 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'