我有一条管道在工作。我有一个wrappper.sh,它将各种.R脚本组合在一起。但是,此管道将通过错误消息运行。我想添加一种方法,grep我们的单词错误,如果真,关闭管道。我知道我需要一个if/ out状态,但是不知道如何在运行在.R中的bash.sh脚本中实现这个信息。参见一个示例错误。
当前脚本:
#!/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"发布于 2022-06-01 21:02:14
如果您不需要grep来查找错误,您可以测试上一次状态代码是否为非零:
#!/bin/bash
Rscript CreateFolder.R
exit_code=$?
if test $exit_code -ne 0
then
echo "Fatal Error, STOP Pipeline"
exit $exit_code
else
echo "DONE! Folders created"
fi如果Rscript CreateFolder.R失败,bash脚本将以相同的状态代码退出。
尽管如果您有更多想要检查的条件,但是使用set -e是有意义的。
如果由单个简单命令、列表或复合命令组成的管道返回非零状态,则
立即退出。
https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html
基本上,它会让您的脚本运行到某些东西失败为止:
#!/bin/bash
set -e
Rscript installPackages.R
echo "DONE! R packages installed"
Rscript CreateFolder.R
echo "DONE! Folders created"
Rscript GLM_EdgeR.R
echo "DONE! Statistical Models completed"对于第二个脚本,CreateFolder.R,失败,它将如下所示:
~/r# ./wrappper.sh
[1] "OK"
DONE! R packages installed
Error: object 'will_fail' not found
Execution haltedhttps://stackoverflow.com/questions/72467469
复制相似问题