2017-01-04 13 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は正しい終了ステータスで戻れません。停止するだけでなく、シェルの実行も終了します。 –

関連する問題