2017-01-04 12 views
3

Предположим, что я бегу Rscript внутри этого сценария оболочкиКак получить статус выхода R сценария запуска в сценарии оболочки

#!/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.")} 
... 
... 

Я не могу зафиксировать статус выхода abc.R в своем сценарии оболочки. Он останавливает выполнение R и даже завершает выполнение сценария оболочки в приглашении.

Есть ли способ захватить статус выхода R.

+0

Может быть [это сообщение] (http://stackoverflow.com/questions/7681199/make-r-exit-with-non-zero -status-code) было бы полезно. – lmo

+0

Статус выхода сценария обычно является статусом выхода последней команды, выполняемой в скрипте. Я не уверен, что это то, что вам нужно. – sjsam

+0

Я думаю, что ваша проблема заключается в использовании 'r_status = echo $?' Вместо 'r_status = $ (echo $?)' (Или предпочтительно 'r_status = $ (echo" $? ")'). [Демо] (https://gist.github.com/nathan-russell/200e4311957908cc816abe014677bea3). – nrussell

ответ

0

Просто запустите сценарий, который вы хотите. убедитесь, что он возвращает правильное состояние выхода при завершении работы. Это должно работать:

#!/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

+0

R не может вернуться с правильным статусом выхода. Он просто останавливается, а также завершает выполнение оболочки. –