我在运行bash shell的Linux终端中使用交互式命令行程序.我有一个确定的命令序列,我输入到shell程序.程序将其输出写入标准输出.其中一个命令是’save’命令,它将上一个运行的命令的输出写入文件到磁盘.
典型的周期是:
$prog
$$cmdx
$$<some output>
$$save <filename>
$$cmdy
$$<again, some output>
$$save <filename>
$$q
$<back to bash shell>
> $是bash提示符
> $$是程序的提示
> q是prog的退出命令
> prog是这样的,它将前一个命令的输出附加到filename
如何自动完成此过程?我想写一个shell脚本,可以启动这个程序,循环执行这些步骤,逐个输入命令,然后退出.我希望save命令正常工作.
解决方法:
如果你的命令不关心你输入的速度有多快,而你真的不需要与它进行交互,那么你可以使用heredoc.
例:
#!/bin/bash
prog <<EOD
cmdx
save filex
cmdy
save filey
q
EOD
如果您需要根据程序的输出进行分支,或者您的程序对命令的时间敏感,那么Expect就是您想要的.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。