如何获取在 shell 脚本中运行的 R 脚本的退出状态
Posted
技术标签:
【中文标题】如何获取在 shell 脚本中运行的 R 脚本的退出状态【英文标题】:How to get exit status of R script run in shell script 【发布时间】: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 脚本的其余行。
【参考方案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 执行。以上是关于如何获取在 shell 脚本中运行的 R 脚本的退出状态的主要内容,如果未能解决你的问题,请参考以下文章