我在运行bash shell的Linux终端中使用交互式命令行程序.我有一个确定的命令序列,我输入到shell程序.程序将其输出写入标准输出.其中一个命令是’save’命令,它将上一个运行的命令的输出写入文件到磁盘.
典型的周期是:
$prog
$$cmdx
$$
$$save
$$cmdy
$$
$$save
$$q
$
> $是bash提示符
> $$是程序的提示
> q是prog的退出命令
> prog是这样的,它将前一个命令的输出附加到filename
如何自动完成此过程?我想写一个shell脚本,可以启动这个程序,循环执行这些步骤,逐个输入命令,然后退出.我希望save命令正常工作.
解决方法:
如果你的命令不关心你输入的速度有多快,而你真的不需要与它进行交互,那么你可以使用heredoc.
例:
#!/bin/bash
prog <
cmdx
save filex
cmdy
save filey
q
EOD
如果您需要根据程序的输出进行分支,或者您的程序对命令的时间敏感,那么Expect就是您想要的.
标签:bash,linux,shell
来源: https://codeday.me/bug/1002/1843400.html