如何将R脚本运算结果赋值给Bash变量CALC并屏蔽启动信息?
解决方法
要屏蔽R的启动信息并仅获取运算结果,需从R脚本输出控制和Rscript调用参数两方面调整:
1. 修改R脚本,确保仅输出纯计算结果
原脚本直接写sum(...)会让R输出带格式的内容(比如[1] 123),同时fread默认会打印读取文件的提示。修改后的脚本如下:
targetFile <- commandArgs(trailingOnly = TRUE) # 用quiet=TRUE关闭fread的读取提示 gg <- data.table::fread(file = targetFile, data.table = FALSE, quiet = TRUE) # 用cat输出纯数值,避免额外格式前缀 cat(sum(gg$V1, gg$V2), "\n")
2. 调整Bash调用命令,抑制R启动信息
调用Rscript时添加--quiet参数,关闭R的启动欢迎/版本信息:
CALC=$(Rscript --quiet calc.R "arg.$j") echo $CALC
补充说明
--quiet(或简写-q)是Rscript的官方参数,专门用于抑制启动时的非必要输出;- 如果仍有其他警告/提示,可在R脚本开头添加
options(warn = -1)临时关闭警告输出,但建议仅在确认无风险时使用; - 无需用数组赋值
CALC=($(...)),直接用CALC=$(...)即可获取完整的数值结果。
内容的提问来源于stack exchange,提问作者MAZ
相关产品推荐
相关产品推荐

