例如,我使用nohup
和执行了一个脚本&
,将脚本执行放在后台,在某个步骤中,脚本要求我做其他事情以便能够继续当前的执行,并且它还要求确认我是否已经输入 Enter 或其他键即可完成。有什么办法可以做到吗?
答案1
回答你明确的问题
是的,有一种编写控制台交互脚本的方法:Expect。那里有相当多的资源(https://core.tcl-lang.org/expect/index似乎是一个很好的起点);探索期待Libes 所著(ISBN 9781565920903)是一本关于这个主题的好书。
特殊情况:如果有只有一个要从键盘输入的内容(例如“ foo
”),您也许可以使用以下技巧之一(并且不必仅针对这一项任务学习 Expect!):
/some/executable <<< 'foo'
script -c "echo 'foo'" /dev/null | /some/executable
- 看http://stackoverflow.com/a/20401674/4446565
回答(似乎是)你的默示问题
有没有一种方法可以预先提供回复,避免麻烦?或许。您正在处理的工具可能可以选择非交互式执行;请仔细阅读使用说明,以防有这样的选项而您没有注意到。我见过非交互式执行选项称为不同的东西;寻找
- “无头”
- “非互动”
- “响应文件”
- “沉默的”
--assumeyes
--preconfig
-y
毫无疑问,其他贡献者可以提供更多示例。