【问题标题】:How to get exit status of R script run in shell script如何获取在 shell 脚本中运行的 R 脚本的退出状态
【发布时间】:2017-05-18 18:44:02
【问题描述】:

假设我在这个 shell 脚本中运行一个 Rscript

#!/bin/bash
RES=$(./abc.R 100)
r_status=echo $?

abc.R 中有一些代码停止执行

#!/usr/bin/env Rscript
...
...
if(nrow(status) == 0)
{ stop("The list id is not present in requests table. Please check.") } else if (status != 'COMPLETED')
{ stop("The list is not in COMPLETED state. Please check.")}
...
...

我无法在我的 shell 脚本中捕获 abc.R 的退出状态。它会停止 R 的执行,甚至从 shell 脚本退出到提示符。

有什么方法可以捕获 R 的退出状态。

【问题讨论】:

  • 也许this post 会有所帮助。
  • 脚本的退出状态通常是脚本中执行的最后一条命令的退出状态。我不确定这是否是您需要的。
  • 我认为您的问题是使用r_status=echo $? 而不是r_status=$(echo $?)(或者最好是r_status=$(echo "$?"))。 Demo.
  • 可能是我的问题不清楚。一旦 R 代码中出现错误,它就会停止执行并退出 shell 脚本,而不是执行 shell 脚本的其余行。

标签: r bash shell command rscript


【解决方案1】:

只需运行您想要的脚本。 确保它在完成运行时返回正确的退出状态。 这应该有效:

#!/bin/bash
./abc.R 100
if  [ $? == 0 ]; then
  echo "Your script exited with exit status 0"
  exit 0

在此处查看更多信息: http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_08_02.html

【讨论】:

  • R 无法以正确的退出状态返回。它只是停止并退出 shell 执行。
猜你喜欢
  • 2018-07-01
  • 2013-09-09
  • 2013-12-19
  • 1970-01-01
  • 1970-01-01
  • 2013-01-05
  • 2013-03-01
  • 1970-01-01
  • 2017-03-08
相关资源
最近更新 更多