2017-01-04 4 views
3

나는이 쉘 스크립트쉘 스크립트에서 실행 R 스크립트의 종료 상태를 얻는 방법

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

내부에서 RSCRIPT를 실행 해요 가정 해 보겠습니다의 실행을 중지 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이 올바른 종료 상태로 돌아올 수 없습니다. 그냥 멈추고 쉘 실행을 중단합니다. –