R语言shell、system、shell.exec函数详解

一、system函数:调用参数command指定的操作系统命令

system(command,intern=false,ignore.stdout=false,ignore.stderr=false,wait=true,input=NULL,show.output.on.console=true,minimized=false,invisible=true)
1.command:字符串
    解析为一个命令+空格分隔的参数,如果命令的路径(或单个参数本身-如文件路径)包括空格,则必须由shQuote引用,在Windows上只允许使用双引号(可以使用paste,paste0拼接),windows路径名上不允许包含双引号,所以不用担心转义嵌入的引号
    command必须是可执行文件(扩展名为.exe,.com);批处理文件(扩展名.bat,.cmd),如果没有提供将依次尝试这些扩展名,不能使用重定向\DOS内部命令\管道
    command可以是shell认为可执行的任何内容,包括shell脚本,也可以包括多个命令,命令以;区分开,在Windows系统中函数system不会使用shell,但shell()函数可将命令传递给shell
2.intern:声明是否将系统命令的执行结果作为R的字符串输出(true则用popen调用命令,否则用C函数system调用)
3.wait:R是否需要等待操作系统命令执行完毕,或者是可以异步执行;如果设置intern=T,则该参数将被忽略
4.show.output.on.console:声明是否将执行操作系统命令的结果,显示在R控制台前
5.minimized:是否将CMD窗口最小化表示
    注:最后两个参数只能在Windows操作系统中使用
    注:如果命令无法运行,status返回值127
    注:如果得到一个非零的退出状态,则抛出一个警告信息,并在结果属性status中提示
6.可通过键盘操作(Rgui中使用Esc键,Rterm中使用Ctrl+C)或在Rgui菜单里,中断正在运行(等待中)的命令:这个操作会将控制权返回给R控制台.R会试图完全中断该过程,但可能需要强制终止,并有可能丢失未保存的工作等

#使用-f列出当前目录中的所有文件 
system("ls -f")
#t1是一个字符向量,各个元素分别对应于who输出的每一行(假设该平台存在对象who) 
t1<-try(system("who", intern = TRUE))
system(paste('"c:/Program Files/Mozilla Firefox/firefox.exe"', '-url cran.r-project.org'), wait = FALSE)
system("java -jar F:/.../SeleniumSever/selenium-server-standalone-3.8.1.jar",wait = F)
system("java -Dwebdriver.chrome.driver=F:/.../SeleniumSever/chromedriver.exe",wait = F)

二、shell函数简介:使用shell运行cmd在shell下的命令

shell(cmd,shell,flag=”\c”,intern=FALSE,wait=TRUE,translate=FALSE,mustWork=FALSE)
1.translate:如果TRUE,“/”在cmd中将被转换为“\”
2.mustWork:如果TRUE,运行命令失败会提示R错误,FALSE则出现警告信息
3.shell:shell名称字符串(bash,tcsh,sh),使用shell=NULL则调用cmd命令,在这种情况下.exe是假定的扩展名,如果给出扩展名,可以直接使用批处理文件
shell是对system更友好化的包装(升级版、补充版,shell在原CMD基础上做了很多修改调整,增加了很多命令及命令别名),该功能仅在Windows上存在

三、shell.exec函数:打开一个文件或URL

#注意设置默认浏览器
shell.exec("http://fund.eastmoney.com/favor.html")
shell.exec("C:/Program Files/BreezeSys/BreezeBrowser/Breezebrowser.htm")



猜你喜欢

转载自blog.csdn.net/qq_38984677/article/details/81061929