2010-09-08 12 views
7

मैंने शेबैंग आर स्क्रिप्ट लिखा है और इसे एक पर्ल स्क्रिप्ट से निष्पादित करना चाहते हैं। मैं वर्तमान में system ($my_r_script_path, $r_script_arg1, $r_script_arg2, ...) का उपयोग करता हूं और मेरा प्रश्न यह है कि मैं आर स्क्रिप्ट को सामान्य रूप से समाप्त कैसे कर सकता हूं (कोई त्रुटि या चेतावनी नहीं)।पर्ल से निष्पादित आर स्क्रिप्ट की सामान्य समाप्ति को कैसे सत्यापित किया जाए?

अनुमान है कि मुझे अपनी आर स्क्रिप्ट को अंत में कुछ वास्तविक मूल्य वापस करना चाहिए, केवल अगर सबकुछ ठीक है, तो पर्ल में इस मान को पकड़ें, लेकिन मुझे यकीन नहीं है कि यह कैसे करें।

धन्यवाद!

+1

http://stackoverflow.com/questions/3477916/using-perls-system#3478060 – daxim

+1

@daxim: यह केवल आधा जवाब है। दूसरा आधा एक आर स्क्रिप्ट में निकास स्थिति को सेट करने का तरीका है। तो यह सिर्फ एक पर्ल सवाल नहीं है, इसलिए दूसरे प्रश्न का डुप्लिकेट नहीं है, इसलिए मैं इस प्रश्न को बंद करने के प्रस्ताव को भी विरोध करता हूं। –

+0

@ एरिस्टोटल: मेरा मानना ​​है कि डेविड एक समाधान का सुझाव दे रहा है जब वह आर लिपि में एक वास्तविक मूल्य लौटने के बारे में बात करता है। यह आवश्यकता का हिस्सा नहीं है। – Zaid

उत्तर

4

आप quit(), जैसे q(status=1) पर वापसी मान सेट कर सकते हैं। डिफ़ॉल्ट 0 है, यह भी देखें? छोड़ो। पर्ल में उसको कैसे पकड़ें, पर्ल में किसी अन्य वापसी मूल्य को पकड़ने की तरह है। यदि मुझे सही याद है तो यह एक विशेष चर $? में सहेजा गया है। system के लिए perldoc में उदाहरण भी देखें, इसे वहां सचित्र किया जाना चाहिए।

एक साइडेनोट पर, मैं केवल आर-पर्ल इंटरफ़ेस का उपयोग करता हूं। त्रुटि संदेश की बचत होगी

options(
    warn=2, # This will change all warnings into errors, 
      # so warnings will also be handled like errors 
    error= quote({ 
     sink(file="error.txt"); # save the error message in a file 
     dump.frames(); 
     print(attr(last.dump,"error.message")); 
     sink(); 
     q("no",status=1,FALSE) # standard way for R to end after errors 
    }) 
) 

यह, और: http://www.omegahat.org/RSPerl/

बस संपूर्णता के लिए: कुछ

अपनी स्क्रिप्ट की शुरुआत में, आप रख सकते हैं जैसे आप की जानकारी और उदाहरण यहाँ मिलेगा बचत के बिना आर सत्र से बाहर निकलें, बाहर निकलने के कोड 1 के साथ और बिना चलने के।

फिर भी, आर-पर्ल इंटरफ़ेस बहुत अधिक संभावनाएं प्रदान करता है जो जांचने के लायक हैं कि आप इसे और अधिक बार करने जा रहे हैं।

+0

और यदि सब कुछ ठीक हो गया है (कोई चेतावनी सहित) तो मैं स्क्रिप्ट के अंत में कैसे कह सकता हूं? क्या मुझे प्रत्येक कमांड के चारों ओर कुछ कोशिश ब्लॉक करना है जो असफल हो सकता है? या क्या किसी भी त्रुटि/चेतावनी पर तत्काल समाप्त करने और कुछ मूल्य वापस करने का कोई वैश्विक तरीका है? –

+0

उस के लिए त्रुटि विकल्प का उपयोग करें। जब कोई त्रुटि होती है, तो आप किसी भी फ़ंक्शन को निर्दिष्ट कर सकते हैं, जैसा कि मैंने पहले बताया था। आप विकल्पों का उपयोग करके किसी चेतावनी को त्रुटि भी दे सकते हैं (चेतावनी = 2)। यह भी देखें http://stackoverflow.com/questions/3650444/r-script-line-numbers-at-error/3660847#3660847 –

+0

"पूर्णता" (+1) के लिए धन्यवाद –

संबंधित मुद्दे

 संबंधित मुद्दे