2012-01-24 9 views
16

उदाहरण on the SBT github page उदाहरणों से प्रेरित, मैं एसबीटी के इंटरैक्टिव मोड में किसी फ़ाइल से चलने वाले स्टडआउट को रीडायरेक्ट करने का प्रयास कर रहा हूं।एसबीटी से एसडीटी रन को रीडायरेक्ट करने के लिए

> run #> file('/Users/dsg/temp/temp.txt') ! 

मैं दोनों के साथ और अंत में ! बिना की कोशिश की है:

यहाँ मेरी असफल प्रयास है। मैंने सिंगल और डबल कोट्स दोनों की कोशिश की है। कुछ भी काम नहीं करता - यह सिर्फ व्यवहार करता है जैसे #> file(... छोड़ा जाता है, चीजें केवल stdout पर मुद्रित होती हैं, कोई फ़ाइल नहीं बनाई जाती है।

उत्तर

10

मैं एक एसबीटी विशेषज्ञ नहीं हूं, लेकिन यह सही सुविधा प्रतीत नहीं होता है।

> run फ़ाइल तर्क के रूप में इसके बाद सब कुछ व्याख्या कर रहा है। #> एसबीटी लाइब्रेरी का हिस्सा है, जो आपके प्रोजेक्ट एसबीटी फाइलों के अंदर उपयोग के लिए है, न कि उनके प्रॉम्प्ट पर।

इस चारों ओर हो रही है, मैं एसबीटी बाहर निकलते हैं, और यह करने के लिए मेरी बाहरी खोल का उपयोग करें:

$ sbt "run" > run_output.txt 
+0

इस दृष्टिकोण के बावजूद सामान्य रूप में काम करता है, यह वास्तव में कुछ कोने मामलों में सबसे अच्छा तरीका नहीं है। मेरे पास स्कैला स्क्रिप्ट शामिल एक केस केस है, संक्षेप में, इसका अर्थ यह है कि स्कैला स्क्रिप्ट का आउटपुट एसबीटी से आउटपुट के साथ मिश्रित हो जाता है ... जिसके परिणामस्वरूप एक बड़ी गड़बड़ी होती है जिसे पाइपलाइन में अगले चरण द्वारा संसाधित नहीं किया जा सकता है। आदर्श रूप से, हम एसबीटी को stderr को stdout लिखने के लिए कहने में सक्षम होना चाहिए, उदाहरण के लिए। इस तरह, स्कैला स्क्रिप्ट से आउटपुट को सूचनात्मक संदेशों और एसबीटी से आने वाले त्रुटि संदेशों द्वारा मिश्रित नहीं किया जाएगा। –

3

यह कैसे एसबीटी कंसोल से ऐसा करने के लिए पता नहीं है, लेकिन खोल कमांड लाइन से आप कैप्चर कर सकते हैं एसबीटी आउटपुट के माध्यम से:

sbt "test" 2>&1 > test.log 
1

आप इसे आजमा सकते हैं।

sbt test >> "log.txt" 
1

यह मेरे लिए काम किया:

sbt | tee log.txt 
संबंधित मुद्दे