r - Why is the following parameter in a bash script not working properly? -
मेरे पास निम्न बाश स्क्रिप्ट है:
#! / Bin / bash जबकि getopts " 1: 2: 3: 4: "आर्ग; मामले में "$ arg" 1) fileWithSpeeds = $ OPTARG ;; 2) शीर्षकऑफ़्राफ़ = $ OPTARG ;; 3) निम्नएचपी = $ OPTARG ;; 4) उच्चतम एचपी = $ OPTARG ;; एएसएसी ने किया ./myPlotter.R $ fileWithSpeeds $ titleOfGraph $ $ न्यूनतम एचपी $ उच्चतम एचपी
असल में, myPlotter.R
किसी दिए गए फ़ाइल में डेटा से एक प्लॉट बनाता है (विवरण हैं इस सवाल के लिए महत्वपूर्ण नहीं है)। जब निम्न पंक्ति में कमांड लाइन में कहा जाता है:
./ myPlotter.R myFile "मेरा शीर्षक" 30 34
स्क्रिप्ट ठीक काम करती है (डॉन myFile
, 30, 34 पर ध्यान न दें, वे इस प्रश्न के लिए केवल अन्य पैरामीटर नहीं बल्कि महत्वपूर्ण हैं I मामले में उन्हें वहां छोड़ दिया है)। हालांकि, जब इस तरह की बास स्क्रिप्ट से बुलाया जाता है:
./ bashPlot.sh -1 myFile -2 "मेरा शीर्षक" -3 30 -4 34
मुझे एक त्रुटि संदेश मिलता है (आर्ग्स में त्रुटि [3]: आर्ग्स [4], "सहायक बलों द्वारा शुरू की गई" अगर सहायक) चलते समय:
प्रतिध्वनि ./myPlotter.R $ fileWithSpeeds $ शीर्षकऑफग्राफ $ न्यूनतमएचपी $ उच्चतम एचपी
मैंने देखा है कि यह निम्न की तरह दिखता है
<प्री> ./myPlotter.R myFile मेरा शीर्षक 30 34
जिसका अर्थ है कि शीर्षक दो तर्कों ('मेरा' और 'शीर्षक') के रूप में गिना जा रहा है जब इसे ' टी। इसलिए मैंने
./ myPlotter.R $ फ़ाइल के साथ लाइन को संशोधित करने का निर्णय लिया है \ "$ titleOfGraph \" $ निम्नएचपी $ सर्वोच्च एचपी
और पंक्ति के प्रतिध्वनि
दिया गया:
./ myPlotter.R myFile "मेरा शीर्षक" 30 34
लेकिन मैं अभी भी समाप्त होता है एक ही त्रुटि मेरा अनुमान है कि शीर्षक अभी भी दो तर्क ('' मेरा 'और' 'शीर्षक') है। क्या इसे ठीक करने का कोई तरीका है? अगर उपयोगी है तो आर स्क्रिप्ट है:
#! / Usr / bin / env Rscript # तर्क इस तरह से आती हैं: # आर्ग्स [1] एक ऐसी फ़ाइल है जिसमें विभिन्न कारों की अधिकतम गति है (एक प्रति पंक्ति) # आर्ग्स [2] शीर्षक है कि साजिश में # आर्ग्स [3] होगा, जिसमें पहली कार के इंजन की घोड़े की शक्ति होगी [1] (सबसे कम) # आर्ग्स [4] में अश्वशक्ति आर्गे में आखिरी कार के इंजन [1] (सर्वोच्चतम) # नोट 1: एआरजी में गति [1] कार से शुरू की जानी चाहिए # सबसे ऊंची अश्वशक्ति के साथ कार को सबसे कम घोड़े की शक्ति के साथ # नोट 2: एआरजी में [1], एक कार 1 हॉर्स पावर से अगले एक से भिन्न होनी चाहिए, यानी, अगर # 5 गतिएं हैं, और फ़ाइल में पहली कार का घोड़े की शक्ति 30 है, तो # दूसरे के अश्वशक्ति 31 होनी चाहिए , तीसरा एक 32, .... पांचवें एक को # होना चाहिए 34. आर्ग्स & lt; -commandArgs (TRUE) # प्रत्येक कार घोड़े की शक्ति के घोड़े की शक्ति के साथ सदिश का निर्माण = संख्यात्मक () के लिए (मैं args में [3]: args [4]) {अश्वशक्ति = सी (अश्वशक्ति, i) } # गति की गति और सदिश गति के साथ पढ़ने वाली फ़ाइल & lt; - read.csv (फ़ाइल = आर्ग्स [1], सिर = FALSE, sep = "\ n") $ V1 # पिछले सदिश आउटपुट में गति के साथ साजिश का निर्माण कर रहा है आउटलेट = gsub प्लॉट (घोड़े की शक्ति, गति, प्रकार = "ओ", col = "red") ("", "एल्ग्स [2], फिक्स्ड = ट्रू) पीडीएफ (पेस्ट (आउटपुटटाइटल," .पीडीएफ ", सेप =" ")) , प्लस शीर्षक (मुख्य = आर्ग्स [2], col.main = "ब्लैक") के लिए एक शीर्षक दे रही है।
यदि आप
bash -x bashplot.sh .... के साथ स्क्रिप्ट डीबग करते हैं ...
आप जो कुछ हुआ है उसे पता लगाने में सक्षम होंगे।
उद्धरणों का उपयोग हर जगह करें, इसलिए:
fileWithSpeeds = "$ OPTARG" # ... और ऐसे
और
./ myPlotter.R "$ fileWithSpeeds" "$ titleOfGraph" "$ निम्नएचपी" "$ उच्चतम एचपी" कोड>
Comments
Post a Comment