Monday 15 February 2010

cygwin - Why is this error happening in bash? -


साइगविन का उपयोग करते हुए, मेरे पास

  currentFold = "` dirname $ 0` "गूंज $ { Currentfold} ...   

यह आउटपुट ... gdrive / c / के बजाय / cygdrive / c /...

ऐसा क्यों है?

आपकी स्क्रिप्ट को डीओएस प्रारूप में संग्रहित किया जाता है, जिसमें कैरेज़ रिटर्न के साथ लाइनफीड (कभी-कभी "\ r \ n" लिखा जाता है) प्रत्येक पंक्ति के अंत में; यूनिक्स लाइनों के अंत में सिर्फ एक लाइनफीड ("\ n") का उपयोग करता है, और इसलिए ऐसा होता है कि कमान के भाग के लिए कैश रिटर्न को भूल जाता है। जब यह देखता है

  currentFold = "` dirname $ 0` "\ r   

यह कर्तव्य रूप से वर्तमान सेट को" / cygdrive / c / \ r "पर सेट करता है, और जब यह देखता है

  प्रतिध्वनि $ {currentFold} ... \ r   

यह प्रिंट करता है "/cygdrive/c/\r ... .." । अंतिम कैरिज रिटर्न वास्तव में कोई फर्क नहीं पड़ता है, लेकिन बीच में एक मतलब है कि "..." "/ cy" के शीर्ष पर मुद्रित हो जाता है, और आप "... gdrive / c /" के साथ हवा निकालते हैं

समाधान: स्क्रिप्ट को यूनिक्स प्रारूप में कनवर्ट करें; मेरा मानना ​​है कि आपके पास इसके लिए dos2unix कमांड उपलब्ध है, लेकिन आपको विकल्प के लिए चारों ओर देखना पड़ सकता है एक चुटकी में, आप

  perl -pi -e 's / \ r \ n? / \ N / g / / path / to / script   का उपयोग कर सकते हैं 

(देखें)। फिर पाठ संपादक पर स्विच करें जो DOS के बजाय यूनिक्स प्रारूप में बचाता है।

No comments:

Post a Comment