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

Предположим, я запускаю 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.")}
...
...

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

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


person Avinash Sonee    schedule 04.01.2017    source источник
comment
Возможно, этот пост будет полезен.   -  person lmo    schedule 04.01.2017
comment
Статус выхода сценария обычно является статусом выхода последней команды, выполненной в сценарии. Я не уверен, что это то, что вам нужно.   -  person sjsam    schedule 04.01.2017
comment
Я думаю, что ваша проблема заключается в использовании r_status=echo $? вместо r_status=$(echo $?) (или предпочтительно r_status=$(echo "$?")). Демо.   -  person nrussell    schedule 04.01.2017
comment
Может я не ясно выразился в своем вопросе. Как только в коде R возникает ошибка, он останавливает свое выполнение, а также завершает работу сценария оболочки вместо выполнения оставшихся строк сценария оболочки.   -  person Avinash Sonee    schedule 05.01.2017


Ответы (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

person Mosh Yaz    schedule 04.01.2017
comment
R не может вернуться с правильным статусом выхода. Он просто останавливается, а также завершает выполнение оболочки. - person Avinash Sonee; 05.01.2017