我正在尝试以 bash 脚本的形式以非交互式方式从运行的 Rscript 中获取状态代码。此步骤是较大数据处理周期的一部分,其中涉及 db2 脚本等。
所以我在脚本sample.sh中有以下内容:
Rscript --verbose --no-restore --no-save /home/R/scripts/sample.r >> sample.rout
运行此 sample.sh 时,它始终返回状态代码 0,无论 sample.r 脚本是完全运行还是在中间步骤中出错。
我尝试了以下事情,但没有运气
1 - 在 sample.sh 文件中,我为返回代码添加了 if 和 else 条件,如下所示,但它再次写回 0,尽管 sample.r 在其中的一个函数中失败。
if Rscript --verbose --no-restore --no-save /home/R/scripts/sample.r >> sample.rout
then
echo -e "0"
else
echo -e "1"
fi
2 - 我还尝试了一个包装脚本,比如在 sample.wrapper.sh 文件中
r=0
a=$(./sample.sh)
r=$?
echo -e "\n return code of the script is: $a\n"
echo -e "\n The process completed with status: $r"
在 sample.r 在变量a
和r
. 理想情况下,我想要一种在a
.
有人可以建议如何让 rscript 仅在整个脚本完成且没有任何错误的情况下写入“0”,而在所有其他情况下写入“1”?
非常感谢您的意见!谢谢你!