【发布时间】:2022-10-15 16:05:39
【问题描述】:
我有一个我正在研究的管道。我有一个 wrappper.sh 将各种 .R 脚本连接在一起。但是,此管道将运行一条错误消息。我想添加一种方法来 grep 我们的单词 Error if True,关闭管道。我知道我需要一个 if/else 语句,但不知道如何从 bash.sh 中运行的 .R 脚本中提取此信息。查看示例错误。
当前脚本:
#!/bin/bash
#Bash script for running GeoMx Pipeline
####
# Install required R packages for pipeline
echo "installing R packages"
Rscript installPackages.R
echo "DONE! R packages installed"
#####
# Created required folders
echo "Creating Folders"
Rscript CreateFolder.R
echo "DONE! Folders created"
####
# Copy data over
cp -u -p Path/Initial\ Dataset.xlsx /PATO_TO
####
# Run Statistical Models
echo "Running Statistical Analysis"
Rscript GLM_EdgeR.R
echo "DONE! Statistical Models completed"
错误示例:
Error in glmLRT(glmfit, coef = coef, contrast = contrast) :
contrast vector of wrong length, should be equal to number of coefficients in the linear model.
Calls: glmQLFTest -> glmLRT
Execution halted
我想要的是:
#!/bin/bash
#Bash script for running GeoMx Pipeline
####
# Install required R packages for pipeline
echo "installing R packages"
Rscript installPackages.R
if grep error == TRUE
then
echo "Fatal Error, STOP Pipeline"
STOP
else
echo "DONE! R packages installed"
#####
# Created required folders
echo "Creating Folders"
Rscript CreateFolder.R
if grep error == TRUE
then
echo "Fatal Error, STOP Pipeline"
STOP
else
echo "DONE! Folders created"
####
# Copy data over
cp -u -p Path/Initial\ Dataset.xlsx /PATO_TO
####
# Run Statistical Models
echo "Running Statistical Analysis"
Rscript GLM_EdgeR.R
if grep error == TRUE
then
echo "Fatal Error, STOP Pipeline"
STOP
else
echo "DONE! Statistical Models completed"
【问题讨论】:
-
如果你真的需要要解析错误消息,您必须捕获它。为此,您必须告诉我们 R 程序打印到标准输出的内容以及打印到标准错误的内容。但是,如果您的 R 脚本表现得足够好,那么测试其退出代码就足够了。