如何编写命令(功能),允许“无限循环”检查互联网连接是否为TRUE否则等待,然后重新检查等等......
这是我的意思:
havingIP <- function() { if (.Platform$OS.type == "windows") {
ipmessage <- system("ipconfig", intern = TRUE) } else {
ipmessage <- system("ifconfig", intern = TRUE) }
validIP <- "((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)[.]){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"
any(grep(validIP, ipmessage)) }
以上解决方案的来源和信誉来自:
How to determine if you have an internet connection in R
if(havingIP()){ source(....) } else { for(i in 1:5) { Sys.sleep(1); cat(i) }}
这样的事情,但这不合适,因为我只想执行命令source
一次。
while(TRUE){
if(havingIP()){ print("working") } else { for(i in 1:5) { Sys.sleep(1);
cat(i) }}
}
那么如何在没有loop
的情况下运行它,每隔5秒检查一次,如果互联网连接没有等待另外5秒,依此类推,直到互联网开启,然后只执行一次source
就是这样。
抱歉,我试图搜索这个解决方案,我确定有人问了类似的东西,但找不到任何东西,因为我不知道如何搜索它。谢谢!
答案 0 :(得分:2)
您好像在寻找break
:
while (TRUE) {
if (havingIP()) {
print("working") # execute what you want here
break # and if we ever reach here, then exit the while loop
} else {
for (i in 1:5) {
Sys.sleep(1)
cat(i)
}
}
}
答案 1 :(得分:2)
对李的回答更简单:
while(!havingIP()) for(i in 1:5) {Sys.sleep(1); cat(i)}
source(...)
这将暂停执行,直到havingIP
返回TRUE。