我来到这个网站寻求帮助,我无法找到答案。
我需要一个脚本,重新启动我的计算机是终端程序输出中找不到的字符串,比方说,30秒。也就是说,如果脚本没有找到名称" joe"在30秒内,它将触发重启命令。或者如果你想从另一个角度看它,脚本将重启机器,除非名称" joe"在给定时间段内在终端程序的输出中找到。
我对bash脚本知识知之甚少。有人可以帮忙吗?
提前致谢!
malandante
答案 0 :(得分:1)
使用Expect而不是Bash来管理交互式脚本,或者当您需要将标准输出视为流时。
#!/usr/bin/env expect
set timeout 30
spawn /path/to/script.sh
expect {
joe {}
# assumes current user has passwordless access to the reboot
# command as configured in /etc/sudoers
timeout { exec /usr/bin/sudo /sbin/reboot }
}
如果您能够以面向行的方式可靠地处理脚本中的标准输出,那么您可以使用Bash TMOUT 变量在 read 命令上设置超时,但是有很多方法可能会失败。期望是这项工作的正确工具。